#include <stdio.h>
#include <stdlib.h> // malloc, freeを使うために必要 [cite: 12]
int main(){
int i, j, k;
int a, b;
int **mat; // 「int型のポインタ」のポインタ [cite: 18]
// --- 【1】ここで2次元配列の動的確保をする ---
// 手順①:まず「各行の先頭アドレス」を格納するためのポインタ配列を確保する [cite: 17, 18]
mat
= (int **)malloc(sizeof(int *) * a
);
for(i = 0; i < a; i++){
// 手順②:各行に対して、実際の数値(int)を入れるための領域を確保する [cite: 17, 18]
mat
[i
] = (int *)malloc(sizeof(int) * b
); }
// --- 【2】ここで2次元配列に数値を代入する ---
// スライドの課題1では「1, 2, 3...と順に自然数を代入」する指示があります [cite: 19]
int count = 1;
for(i = 0; i < a; i++){
for(j = 0; j < b; j++){
mat[i][j] = count++;
}
}
// 表示の部分
for(i = 0; i < a; i++){
for(j = 0; j < b; j++){
}
}
// --- 【3】最後に忘れずにすること(メモリ解放) ---
// 使い終わったら free( ) をして後始末をします
// 確保した時と「逆の手順」で解放するのがルールです
for(i = 0; i < a; i++){
free(mat
[i
]); // まず各行の中身を解放 }
free(mat
); // 最後に外枠のポインタ配列を解放
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4gLy8gbWFsbG9jLCBmcmVl44KS5L2/44GG44Gf44KB44Gr5b+F6KaBIFtjaXRlOiAxMl0KCmludCBtYWluKCl7CiAgICBpbnQgaSwgaiwgazsKICAgIGludCBhLCBiOwogICAgaW50ICoqbWF0OyAvLyDjgIxpbnTlnovjga7jg53jgqTjg7Pjgr/jgI3jga7jg53jgqTjg7Pjgr8gW2NpdGU6IDE4XQogICAgc2NhbmYoIiVkICVkIiwgJmEsICZiKTsKCiAgICAvLyAtLS0g44CQMeOAkeOBk+OBk+OBpzLmrKHlhYPphY3liJfjga7li5XnmoTnorrkv53jgpLjgZnjgosgLS0tCiAgICAvLyDmiYvpoIbikaDvvJrjgb7jgZrjgIzlkITooYzjga7lhYjpoK3jgqLjg4njg6zjgrnjgI3jgpLmoLzntI3jgZnjgovjgZ/jgoHjga7jg53jgqTjg7Pjgr/phY3liJfjgpLnorrkv53jgZnjgosgW2NpdGU6IDE3LCAxOF0KICAgIG1hdCA9IChpbnQgKiopbWFsbG9jKHNpemVvZihpbnQgKikgKiBhKTsgCiAgICAKICAgIGZvcihpID0gMDsgaSA8IGE7IGkrKyl7CiAgICAgICAgLy8g5omL6aCG4pGh77ya5ZCE6KGM44Gr5a++44GX44Gm44CB5a6f6Zqb44Gu5pWw5YCkKGludCnjgpLlhaXjgozjgovjgZ/jgoHjga7poJjln5/jgpLnorrkv53jgZnjgosgW2NpdGU6IDE3LCAxOF0KICAgICAgICBtYXRbaV0gPSAoaW50ICopbWFsbG9jKHNpemVvZihpbnQpICogYik7CiAgICB9CiAgICAKICAgIC8vIC0tLSDjgJAy44CR44GT44GT44GnMuasoeWFg+mFjeWIl+OBq+aVsOWApOOCkuS7o+WFpeOBmeOCiyAtLS0KICAgIC8vIOOCueODqeOCpOODieOBruiqsumhjDHjgafjga/jgIwxLCAyLCAzLi4u44Go6aCG44Gr6Ieq54S25pWw44KS5Luj5YWl44CN44GZ44KL5oyH56S644GM44GC44KK44G+44GZIFtjaXRlOiAxOV0KICAgIGludCBjb3VudCA9IDE7CiAgICBmb3IoaSA9IDA7IGkgPCBhOyBpKyspewogICAgICAgIGZvcihqID0gMDsgaiA8IGI7IGorKyl7CiAgICAgICAgICAgIG1hdFtpXVtqXSA9IGNvdW50Kys7IAogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8g6KGo56S644Gu6YOo5YiGCiAgICBmb3IoaSA9IDA7IGkgPCBhOyBpKyspewogICAgICAgIGZvcihqID0gMDsgaiA8IGI7IGorKyl7CiAgICAgICAgICAgIHByaW50ZigiJWQgIiwgbWF0W2ldW2pdKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgfQogICAgCiAgICAvLyAtLS0g44CQM+OAkeacgOW+jOOBq+W/mOOCjOOBmuOBq+OBmeOCi+OBk+OBqO+8iOODoeODouODquino+aUvu+8iSAtLS0KICAgIC8vIOS9v+OBhOe1guOCj+OBo+OBn+OCiSBmcmVlKCApIOOCkuOBl+OBpuW+jOWni+acq+OCkuOBl+OBvuOBmSAKICAgIC8vIOeiuuS/neOBl+OBn+aZguOBqOOAjOmAhuOBruaJi+mghuOAjeOBp+ino+aUvuOBmeOCi+OBruOBjOODq+ODvOODq+OBp+OBmQogICAgZm9yKGkgPSAwOyBpIDwgYTsgaSsrKXsKICAgICAgICBmcmVlKG1hdFtpXSk7IC8vIOOBvuOBmuWQhOihjOOBruS4rei6q+OCkuino+aUviAKICAgIH0KICAgIGZyZWUobWF0KTsgLy8g5pyA5b6M44Gr5aSW5p6g44Gu44Od44Kk44Oz44K/6YWN5YiX44KS6Kej5pS+IAoKICAgIHJldHVybiAwOwp9