在C语言中,数组名代表数组的首地址,也就是数组第一个元素的内存地址。数组名本身是一个常量表达式,其值不能改变(即不能对数组名进行赋值操作)。例如: c int arr[10]; 这里,arr就是数组名,它代表数组arr的首地址。 数组名与指针的关系: 数组名在很多情况下可以像指针一样使用,比如作为函数参数传递时,数组...
1、数组名不是指针 我们先来推翻"数组名就是指针"的说法,用反证法。 证明 数组名不是指针 假设:数组名是指针; 则:pStr和str都是指针; 因为:在WIN32平台下,指针长度为4; 所以:第6行和第7行的输出都应该为4; 实际情况是:第6行输出10,第7行输出4; 所以:假设不成立,数组名不是指针 */ 这是文章里面的...
所以,编译器避免在参数中传递大量的数据,当参数是一个数组的时候,它只传递数组名代表的首地址。所以,数组名就转换成指针,传递一个指针。
在c语言中,虽然可以通过数组名来间接访问二维数组的元素,这种操作在本质上仍然是指针操作。数组名在某些情况下可以被视为指向数组首元素的指针。然而,将二维数组的数组名理解为一个二级指针是不准确的,因为数组名在使用时不会被解引用两次。数组名代表的是数组的首地址,而不是指向指向另一个指针的地...
不可以,C/C++中 数组名虽然形同一个指针 但是是常值 是不可以进行赋值操作的,同理 也不可以进行++ -- += -= 操作,希望可以帮助到你
int (*p)[6]=a;这个操作是合法的,二维数组名是一个指向数组的指针,本质上是一个二级指针,但不能...
不是 二级指针p也可以解释为指针的指针,即p内保存的值实际上还是一个指针,计算:p的值实际上是一个指针值,那么 *(*p)即二级指针指向的最终值 对于二维数组a[2][2],a也是一个地址,并且这个值也等于a[0],也等于a[0[0]的地址,即&a[0][0],由此看来对a取地址的值是一个变量值(不...
数组名不能移动),但是它仅仅只是一个指针,你可以在调用的函数里用sizeof(num),sizeof(p)求它们的值,就知道为什么总是要加上一个int n了,因为如果不加的话函数就不知道你要操作的数的个数,另外别忘了传递数组和传递一般的int,double等类型是不一样的,传递数组传递的是原数组,函数的操作就...
1、指向二维数组的指针本质上是一个二级指针,它是一个变量 2、二维数组名是二维数组的首地址,也就是...
可以。是数组也行,如:void f1(int a[]){ } void f2(int *p){ } int a[]={1,2,3};f1(a);f2(a);