2次元配列のメモリ領域の動的確保(C言語)
変数宣言と初期化int idata[3][2] = {};
と同じことをやろうとしています。
ソースコード
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[]) {
int **idata;
int length,side;
int i,j;
length = 3;
side = 2;
idata = calloc(length,sizeof(int *));
for(i = 0;i < length;i++){
idata[i] = calloc(side,sizeof(int));
}
for(i = 0;i < length;i++){
for(j = 0;j < side;j++){
printf("idata[%d][%d]:%d\n",i,j,idata[i][j]);
}
}
for(i = 0;i < length;i++){
free(idata[i]);
}
free(idata);
return 0;
}
実行結果
idata[0][0]:0
idata[0][1]:0
idata[1][0]:0
idata[1][1]:0
idata[2][0]:0
idata[2][1]:0