我刚刚开始学习 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
它们是相同的值,只是格式问题。
cout 版本以 0x 作为前缀,以 10 个十六进制数字书写。 printf 版本以 16 个十六进制数字书写,并带有前导零