堆空间内开辟的数组的地址的地址是什么?
上代码:
结果示例如下:
9
9
0035FBC4
0035FBC4
0035FBC4
9
9
00174D28
0035FBB8
00174D28
也就是说&A同&A[0]的结果一致,而&B同&B[0]的结果不一致,这是为什么?
#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]的结果不一致,这是为什么?
...全文
相关推荐
动态开辟二维数组.doc )
动态开辟二维数组.
用vector(向量)实现动态开辟二维三维数组c++语言及MPI
此文件比较详细的介绍了用C++怎么动态的开辟二维三维数组。
【源代码】C++算法(五)一维数组去重(复杂度为n且不新开辟空间)
【源代码】C++算法(五)一维数组去重(复杂度为n且不新开辟空间) https://blog.csdn.net/handoking/article/details/79751939
C语言中堆空间的生成与释放详解
以下是对C语言中堆空间的生成与释放进行了详细的分析介绍,需要的朋友可以过来参考下
C++ 在堆上开辟与释放二维、三维指针详细解析
学习C++新手通常会对指针的使用比较头疼,其实指针的概念很简单,只要能悟清楚这样一个简单的道理就能对指针有一定的认识了: 例如 int *a = new int[10]; 一维指针其实就相当于一维数组,不用去看书上所说的数组在内存中的首地址这些晦涩的话,以此类推 二维指针就相当于二维数组,新手对一维数组的开辟与释放比较容易熟悉,例如上面的a 释放就是 delete []a; a = NULL; 注意a = NULL; 必须要加上,这样是为了避免这个指针会变成“野指针”。写程序时一定要注意规范性和严谨性,避免可能会出现的错误。 代码如下://二维指针的开辟与释放int **b = NULL;b


