二维数组在内存中的分配如下:
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>