数组的地址

quu*_*zer 28 c++ arrays pointers memory-address

int t[10];

int * u = t;

cout << t << " " << &t << endl;

cout << u << " " << &u << endl;
Run Code Online (Sandbox Code Playgroud)

输出:

0045FB88 0045FB88
0045FB88 0045FB7C
Run Code Online (Sandbox Code Playgroud)

输出u是有道理的.

我理解t并且&t[0]应该具有相同的价值,但是怎么样&t也一样?实际意味着什么?

Man*_*rse 29

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

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

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


Aby*_*byx 5

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

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