首先,我们来说说以下表达式的区别
int p1[][13];
int (*p2)[13];
int *p3[13];
p1与p2其实是同一个意思,都是一个指针,表明它们是指向具有13个整型元素的一维数组。
p3则可以这样来理解
typedef int* PTR;
PTR p3[13];
这样来写的话,也许会比较容易理解。p3表示声明了一个数组,该数组有13个元素,其实每个元素都是指向整形对象的指针。
好了,下面我们来看看如何用malloc动态申请二维空 间
#include <stdlib.h> #define M 10 #define N 20 int main(int argc, char *argv[]) { int **p; int i; //申请空间 p = (int**)malloc(sizeof(int*)*M); for (i=0; i<M; i++) p[i] = (int*)malloc(sizeof(int)*N); //释放空间 for (i=0; i<M; i++) free(p[i]); free(p); }