実行時に C で 2 次元配列を割り当てたいと考えています。これは、次のような従来の方法で実現できます。
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));
2番目の宣言がどのように機能するかを誰か説明できますか? 具体的には、 とはどういう意味(int (*)[rows])malloc
ですか? 私の知る限り、はまたはmalloc
のように使用されます。(int *)malloc(ncol*sizeof(int))
(char *)malloc(ncol*sizeof(char))