在C ++中,我写了以下简单的主要内容:
int main() {
char test[100];
void* a = (void*) test;
void* b = (void*) &test;
std::cout << a << " " << b << std::endl;
return 0;
}
它为a
和b
提供了相同的结果。为什么是这样?我希望第二个是第一个地址的符号......
答案 0 :(得分:6)
在C ++中,数组被转换为指向数组第一个元素的指针。 test
是指向第一个元素test[0]
的指针。 &test
是整个数组test
的地址。虽然test
和&test
的类型不同,但它们的值相同,这就是您获得相同值的原因。
例如
int a[3] = {5, 4, 6};
请看下图:
有关详细说明,请阅读此answer。