C++ new申请二维数组整理

a) int a; 表示一个内存空间,这个空间用来存放一个整数(int);

b) int* a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间;

c) int** a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。也简单的说,指向了一个b)中提到的空间;

动态申请二维数组:

//申请空间

    int** a2 = new int*[rows]; //开辟一块内存用来存放 每一行的地址 int*,申请两个int * 型的空间

    for(int i=0;i<rows;i++)

        a2[i] = new int[columns];  //再分别为每一行开辟内存

    //释放空间

    for(int i=0;i<rows;i++)

        delete []a2[i];

    delete []a2;

————————————————

int **swp;      //动态申请二维数组 2行 10列  

swp=new int*[2];  

for(int i=0;i<2;i++)  

swp[i]=new int[10];  

释放内存:

for(int i=0,i<2,i++)

delete []a[i];

delete []a;

d) int (*a)[10];a是一个指针,这个指针指向一个长度为10、类型为int的数组;

如果有一个二维数组p[2][10], a = p; a++以后 指向p[1][0]

int (*a)[10] = new int[2][10]; 


int a[m][n];

这代表了一个m行n列的二位数组。

或者是

int **p;

用指针定义一个二位数组。

还有

int (*p)[n];

这定义了一个未知行n列的二位数组。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容