为什么打印时数组名称和指向第一个元素的指针显示不同的地址?

问题描述 投票:0回答:1

我刚刚开始学习 cpp,我发现数组名称会衰减为指向该数组第一个元素的内存地址的指针,但是 当我创建一个指向数组的相同第一个索引的指针时,它们都打印不同的内存地址。

#include <iostream>
using namespace std;

int main()
{ 
    int array[4] = {1, 3, 5, 7};

    cout << "Memory Address of array is:\n" << array << "\n";

    int *myp;

    myp = &array[0];

    printf("Memory Address of myp is: %p\n", myp);

    return 0;
}

Memory Address of array is:
0x7718dff8c0
Memory Address of myp is : 0000007718dff8c0 

c++ arrays pointers
1个回答
1
投票

它们是相同的值,只是格式问题。

cout 版本以 0x 作为前缀,以 10 个十六进制数字书写。 printf 版本以 16 个十六进制数字书写,并带有前导零

© www.soinside.com 2019 - 2024. All rights reserved.