您的位置:首页 > 编程语言 > C语言/C++

【C++】动态开辟二维数组

2015-06-07 13:21 337 查看
二维数组在内存中的分配如下:



C方式呈现:

<span style="font-size:18px;">
#include <iostream>
using namespace std;

#define ROW 3
#define COL 4

void main()
{
int **p = (int **)malloc(sizeof(int*)*ROW);
for(int i=0; i<ROW; ++i)
{
p[i] = (int *)malloc(sizeof(int) * COL);
}

for(i=0; i<ROW; ++i)
{
for(int j=0; j<COL; ++j)
{
p[i][j] = i+j;
}
}

for(i=0; i<ROW; ++i)
{
for(int j=0; j<COL; ++j)
{
cout<<p[i][j]<<" ";
}
cout<<endl;
}

for(i=0; i<ROW; ++i)
{
free(p[i]);   //delete []p[i]
}
free(p);          //delete []p;

} 
</span>


C++:

注意这里使用的列优先方式:

<span style="font-size:18px;">
#include<iostream>
using namespace std;

#define ROW 3
#define COL 4

void main()
{
int(*p)[COL] = new int[ROW][COL];
for(int i=0; i<ROW; ++i)
{
for(int j=0; j<COL; ++j)
{
p[i][j] = i+j;
}
}

for(i=0; i<ROW; ++i)
{
for(int j=0; j<COL; ++j)
{
cout<<p[i][j]<<" ";
}
cout<<endl;
}
delete []p;
}
</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: