1、数组名不是指针 我们先来推翻"数组名就是指针"的说法,用反证法。 证明 数组名不是指针 假设:数组名是指针; 则:pStr和str都是指针; 因为:在WIN32平台下,指针长度为4; 所以:第6行和第7行的输出都应该为4; 实际情况是:第6行输出10,第7行输出4; 所以:假设不成立,数组名不是指针 */ 这是文章里面的...
所以,编译器避免在参数中传递大量的数据,当参数是一个数组的时候,它只传递数组名代表的首地址。所以,数组名就转换成指针,传递一个指针。
数组名,不是指针,但在许多场合可以发挥指针的作用(指示地址)� assiss 超能力者 9 5: 你考虑的还是不够全面,如下例: char c; char * const p2=&c; p2++; === main.c:14: error: increment of read-only variable 'p2' assiss 超能力者 9 如果说数组名是常量,那为什么数组名还需要声明...
可以的,数组名就是数组第一个元素的指针,所以可以赋值给相同类型的指针变量,此时,数组名和这个指针都指向这个数组的开头。
指针是个存储单元,里面存有地址,单元内的地址是可改变的。二级指针也是指针,它存的地址是其他指针的...
不可以,C/C++中 数组名虽然形同一个指针 但是是常值 是不可以进行赋值操作的,同理 也不可以进行++ -- += -= 操作,希望可以帮助到你
不是 二级指针p也可以解释为指针的指针,即p内保存的值实际上还是一个指针,计算:p的值实际上是一个指针值,那么 *(*p)即二级指针指向的最终值 对于二维数组a[2][2],a也是一个地址,并且这个值也等于a[0],也等于a[0[0]的地址,即&a[0][0],由此看来对a取地址的值是一个变量值(不...
然后访问这个内存位置,所以C语言指针取值和数组名取值是一样快的!另外在C陷阱与缺陷中,明确提到对于一个数组的引用,咋看上去是对数组下标的运算,实际上是通过指针进行的,即任何一个数组下标的运算都等同于一个对应的指针运算,所以是一样快的。另外看两种实现的汇编指令也可以得到一样的结论。
40回复贴,共1页 <<返回c语言吧数组名作为常量指针占内存吗 只看楼主 收藏 回复 我名字叫胡汉三 团子家族 10 eczn_chan 低能力者 5 占 I_lovetennis 酱油 4 不占,数组名只是地址标量,就像门牌和门的关系,他只是门牌 I_lovetennis 酱油 4 他只是把数组名所在的一块连续内存块压入栈,数组名没...