在 C++ 中,我编写了以下简单的 main:
int main() {
char test[100];
void* a = (void*) test;
void* b = (void*) &test;
std::cout << a << " " << b << std::endl;
return 0;
}
a
和 b
的结果相同。为什么是这样?我希望从符号中第二个是第一个的地址..
最佳答案
在 C++ 中,数组被转换为指向数组第一个元素的指针。 test
是指向第一个元素 test[0]
的指针。 &test
是整个数组test
的地址。虽然 test
和 &test
的类型不同,但它们的值是相同的,这就是为什么你得到相同的值。
例如
int a[3] = {5, 4, 6};
请看下图:
有关详细说明,请阅读此 answer .
关于c++ - 为什么取消引用数组会导致相同的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28571738/