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