指针和数组的关系 数组名和指针的区别?
数组名和指针的区别?
数组和指针之间的区别:数组名称确实表示指向数组第一个地址的指针,但是这个指针非常特殊。它的值(指针的值指指针的地址)不能重写。可以重写的只是它所指向的内容。换句话说,数组名只能指向数组的第一个地址。如果存在数组char a[],则如果出现a=a,则这是一个编译错误。对于普通指针,这是可能的。例如,如果有一个数组char a,那么定义char*P=a然后P=p1是合法的,这意味着指针P指向&A[1]。它们之间的第二个区别是,每当使用数组名的指针时,系统都会传入数组的信息,而普通的指针只是一个4字节的整数,例如:
char a[5]char*P=a//指针a和指针P都指向数组a cout<< sizeof(a)< “#”<< sizeof(P)<<此时,运行结果是“5×4”
指针、数组名、函数名都是地址吗?
是。在C语言中,函数名也称为函数指针,所以C语言中的函数名就是指针函数指针”本身首先应该是指针变量,但指针变量指向函数。这就像使用指针变量指向整数变量、字符类型和数组一样。这里是指向函数。如前所述,C编译时,每个函数都有一个入口地址,即函数指针指向的地址。当你有一个指向函数的指针变量时。使用此指针变量调用函数与使用指针变量引用其他类型的变量相同。这些概念基本相同。函数指针有两个用途:调用函数和作为函数的参数。
数组名可以认为是一个存放地址的指针变量名,即数组其实就是指针吗,求详解?
不可以。指针变量不仅可以指向数组的第一个地址,还可以指向其他数组。例如,结构的第一个地址、函数的入口地址等等。或者可以指向数组中的元素。数组名是地址,在某种意义上相当于指针。而不是指针变量。指针变量int*P=0P是指针变量。
C语言中,指针和数组名有什么关系吗?
事实上,当你问一个问题时,你无意中说了一点不同。就地址而言,两者没有区别。但是,指针可以自由移动,但是数组名不能。这是因为数组名是一个命名变量,而变量名本身不能更改。因此,无论何时使用它,它都指向一个固定的地址,指针变量得到地址事实上,这个进程是一个匿名引用进程,它得到的是地址而不是变量名,既然你不知道它是变量名,你可以随意更改它。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。