c++ - 为什么取消引用数组会导致相同的地址?

标签 c++ pointers

在 C++ 中,我编写了以下简单的 main:

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

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

    return 0;
}

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

最佳答案

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

例如

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

请看下图:

enter image description here

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

关于c++ - 为什么取消引用数组会导致相同的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28571738/

相关文章:

c++ - 寻找新的内存地址? C++

c++ - 来自用作模板参数的指针的类类型

Python:追加原始对象与追加对象的副本

c++ - C++ 教程需要更新到什么程度?

c++ - C++ 中是否有任何跨平台线程库?

c++ - 基于 vector 获取范围内的项目索引

c++ - 有没有办法在 libstdc++ 中制作原子 shared_ptr?

C++ 在哪里定义全局变量(链接器错误 : Symbol already defined)

c++ - 为什么这个 union 结构会导致内存泄漏?

c++ - 这是什么意思 "!somePointer"?