c++ - 数组的地址

标签 c++ arrays pointers memory-address

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 用作 & 运算符的参数时,不会发生这种转换。 & 然后显式地获取 t 的地址(数组)。 &t 是指向整个数组的指针。

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

关于c++ - 数组的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8412694/

相关文章:

c++ - 通过对 C++ 线程的引用传递局部变量

c++ - 在 vector/列表中,您实际上是将它应用于对象吗? (C++)

javascript - 如何使用 Object() 覆盖 JavaScript 对象值

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

c++ - 如何在一个指针数组中存储可变大小的空指针?

c++ - 将 Visual C++ 项目迁移到 Visual Studio 2013 - DirectShow 基类错误 C2169

c - C 和数组声明中的 "final"修饰符

c - 函数指针的大小取决于哪些参数?

C++:奇怪的指针损坏错误

c++ - 使用 C++ 模板类方法的 C 回调