二维数组在内存中的分配例如以下:

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

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>
05-03 22:10