我想使用 malloc 声明一个二维数组。在互联网上查找时,所有网站都告诉声明一个 int ** 指针,然后使用 malloc 首先将各个指针分配给一维数组,然后再次使用 malloc 为各个 int 分配空间。我怀疑以这种方式声明的数组不会将其元素保存在连续的内存地址中。而以下方式仅使用一个 malloc 语句并动态分配一个二维数组,并且所有地址都根据需要是连续的。那么以下不应该是动态分配二维数组的正确方法吗?
#include <stdio.h>
int main(){
int (*p)[2] = malloc(3 * sizeof *p);
int i;
int j;
//All addresses printed here are contiguous
for(i=0; i<3; i++){
for(j=0; j<2; j++){
printf("%d\t", &p[i][j]);
}
printf("\n");
}
}