int i,**p=(int**)malloc(row*sizeof(int)); for(i=0;i<row;i++) p[i]=(int*)malloc(column*sizeof(int));
但这个方法每次分配指针时都要调用(void)malloc(int)函数,在分配上浪费了时间,因此可以做如下简化:
int i,**p=(int**)malloc(row*sizeof(int)); p[0]=(int*)malloc(row*column*sizeof(int)); for(i=1;i<row;i++) p[i]=p[0]+i*column;
但要注意,这两个方法在内存上的存储是有差别的。第一个每行里的每个元素在内存上是连续的,但每行之间并不一定连续,而第二种每行都是连续的。