int a[5] &a 为什么不是一个指向指针的指针呢 a 是 a[0]的地址,就是说 a 是一个指向 int 的指针?请 V 友们解答一下,困扰我 2 小时了......
1
CEBBCAT 2018-06-29 20:19:34 +08:00
没看懂,似乎有点语义不同,注意断句
|
3
CEBBCAT 2018-06-29 20:37:24 +08:00
你可能需要这个:[C 语言 数组名不是首地址指针
]( https://www.cnblogs.com/liqiuhao/p/7737539.html) 搜索过程: @Livid 请问在有可能支持 ![]() 中使用 data:image/png;base64,…… 而非 https://…… 吗?(我知道暂时只能够在主题帖中使用 Markdown ) |
4
ruimz 2018-06-29 20:45:06 +08:00 via Android
int a[5] 的情况下,&a 的返回值是指向指针的指针。。。但&a 他是一个表达式,肯定不是变量呀
|
5
Monad 2018-06-29 20:51:05 +08:00
因为 a 的类型是 int[5] 只是可以退化成 int*
|
6
ruimz 2018-06-29 21:00:37 +08:00 via Android
|
7
lance6716 2018-06-29 21:02:34 +08:00 via Android
int i; &&&&&&i 根本没有意义
|
8
xfcy 2018-06-29 21:07:39 +08:00 via Android
我记得《 C 专家编程》中有提到这个问题,楼主不妨去查查看。
|
9
msg7086 2018-06-30 02:11:36 +08:00
如果 a 是数组,那么&a 就是 a 的地址。打印&a 和 a 的结果是相同的。
然后 a+1 是加一个元素长度( 4 字节),而&a+1 是加整整一个数组的长度( 20 字节),他们的类型还是有区别的。 |
10
700388 2018-06-30 09:26:16 +08:00
楼主的意思是想要 a[5] 的地址吧,c++确实不支持数组 下面子地址访问。因为没必要。 数组的单个变量地址,拿来干什么?根本没用,所以 c++之所以给数组的整体地址,便于传值和修改,而不给子地址。
要想访问 int &b=a[5]; 这样就可以看到子地址。实际并无用。 |