为了账号安全,请及时绑定邮箱和手机立即绑定

阵列地址。

阵列地址。

潇潇雨雨 2019-09-26 10:13:42
int t[10];int * u = t;cout << t << " " << &t << endl;cout << u << " " << &u << endl;输出:0045FB88 0045FB880045FB88 0045FB7C输出对于u是有意义的。我理解t并且&t[0]应该具有相同的值,但是为什么&t也相同?&t实际上是什么意思?
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

t在表达式中单独使用它时,将进行数组到指针的转换,这将产生一个指向数组第一个元素的指针。

t用作&运算符的参数时,不会进行这种转换。所述&然后明确地需要的地址t(阵列)。&t是指向整个数组的指针。

数组的第一个元素在内存中的位置与整个数组的开头相同,因此这两个指针具有相同的值。


查看完整回答
反对 回复 2019-09-26
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

t由于您无法更改,因此没有名为的变量。该名称t仅指第一个元素的地址(并且还具有与之关联的大小)。因此,采用该地址的地址实际上是没有意义的,并且C将其“折叠”为仅仅是地址。

对于函数情况,也会发生同样的事情:

int foo(void){
  return 12;}printf("%p and %p\n", (void *) foo, (void *) &foo);

这应该打印出相同的内容,因为没有保存地址的变量foo,而该地址又可以采用。


查看完整回答
反对 回复 2019-09-26
?
holdtom

TA贡献1805条经验 获得超10个赞

的实际类型tint[10]&t数组的地址也是如此。

同样,int[]隐式转换为int*,因此t 转换为数组第一个元素的地址。


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 575 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信