我想在运行时在 C 中分配一个二维数组。现在这可以通过传统方式实现,如下所示:
int *matrix[rows]
for (row = 0; row < rows; ++row) {
matrix[row] = (int *)malloc(ncol*sizeof(int));
}
但我找到了另一种方法,它做同样的事情:
int (*p)[rows];
p=(int (*)[rows])malloc(rows*cols*sizeof(int));
谁能解释第二个声明是如何工作的?具体来说,是什么意思(int (*)[rows])malloc
?据我所知,malloc
使用类似(int *)malloc(ncol*sizeof(int))
or (char *)malloc(ncol*sizeof(char))
。