为什么解除引用数组会产生相同的地址?

时间:2015-02-17 21:48:12

标签: c++ pointers

在C ++中,我写了以下简单的主要内容:

int main() {
    char test[100];
    void* a = (void*) test;
    void* b = (void*) &test;

    std::cout << a << " " << b << std::endl;

    return 0;
}

它为ab提供了相同的结果。为什么是这样?我希望第二个是第一个地址的符号......

1 个答案:

答案 0 :(得分:6)

在C ++中,数组被转换为指向数组第一个元素的指针。 test是指向第一个元素test[0]的指针。 &test是整个数组test的地址。虽然test&test的类型不同,但它们的值相同,这就是您获得相同值的原因。

例如

int a[3] = {5, 4, 6};  

请看下图:

enter image description here

有关详细说明,请阅读此answer