但是~但是~书上有这种写法
这里要解释下:
&的取地址的符号。
数组名a在意义上相当于一个指针,但是又不同于一般指针,相当于常量。
&a相当于取的是指针的地址,就好比你写p=a;然后&p,这样&p和a表示的不是一个意思。
所以&a相当于int**类型(也就是指向指针的指针),而你一般取数组首地址是int*类型的。
但是由于a的特殊性,这里&a和a的地址值一样而已。
来看两者区别:
a和&a分别+1以后,你就会发现两个跨度不一样(a+1跨了一个int元素大小4字节,而&a直接跨了一个数组的大小)
特别注意:我这里写的是a+1,不要写a++;a是常量指针不能改变其值!!!
好的~谢谢你~爱你唷~
隐式转换和显式转换的区别。
编译器遇到一维数组名取值时,按以下顺序处理:
当有&符号时,取地址(如果数组名后面有索引 [n] 则取n元素的地址,否则取首地址)
当有*符号时,取值(元素为指针)
默认情况下,视作带&,即取地址(隐式转换)。
好的~谢谢你~!
你看看输出结果:
a = 0x7ffecb6b8770