堆空间内开辟的数组的地址的地址是什么?

深夜代码党 深夜代码党 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
上代码:

#include<iostream>
using namespace std;
int main(){
int A[10]={9,8,7,6,5,4,3,2,1,0}; //栈空间开辟
cout<<*A<<endl; //A指向数组的首地址,解引用即为9
cout<<A[0]<<endl;
cout<<&A[0]<<endl; //A[0]为数组的第一个元素,取地址
cout<<&A<<endl; //A为数组第一个元素的地址,该元素应该存放在栈上,&A取地址的地址
cout<<A<<endl; //A为数组的首地址

int *B;
B=new int[10]; //堆空间开辟
B[0]=9;
cout<<*B<<endl; //B指向数组的首地址,解引用即为9
cout<<B[0]<<endl;
cout<<&B[0]<<endl; //B[0]为数组的第一个元素,取地址
cout<<&B<<endl; //B为数组第一个元素的地址,该元素应该存放在堆上,&B取地址的地址
cout<<B<<endl; //B为数组的首地址
delete B;
system("pause");
}


结果示例如下:
9
9
0035FBC4
0035FBC4
0035FBC4
9
9
00174D28
0035FBB8
00174D28

也就是说&A同&A[0]的结果一致,而&B同&B[0]的结果不一致,这是为什么?
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
深夜代码党
C++ 语言 65,214 成员 250,514 内容