【发布时间】:2012-01-14 19:25:47
【问题描述】:
int t[10];
int * u = t;
cout << t << " " << &t << endl;
cout << u << " " << &u << endl;
输出:
0045FB88 0045FB88
0045FB88 0045FB7C
u 的输出有意义。
我知道t 和&t[0] 应该有相同的值,但是&t 怎么也一样呢? &t 究竟是什么意思?
【问题讨论】:
-
¤ 转换为指针的
t和&t之间的唯一区别是指针类型。后者的所指对象在形式上是数组类型,因此向它添加 1 会移动它很多(到内存中的下一个这样的数组)。而前者的所指对象是元素类型。术语:在 [comp.lang.c++] Usenet 组中,关于是否可以说像您的u这样的指针“指向”数组存在一些争议,因为它的所指对象不是数组类型。通过指出标准对此类措辞的使用,无数次解决了这一问题。干杯&hth., -
&u 是对整型指针的引用,你通常使用它作为一些函数的参数。
标签: c++ arrays pointers memory-address