#include <stdio.h>
// 行ごとの合計を計算して表示する関数
void calculate(int a[3][4])
{
int i, j;
int sum;
for (i = 0; i < 3; i++) { // 行を 0,1,2 と回す
sum = 0; // その行の合計を 0 からスタート
for (j = 0; j < 4; j++) { // 列を 0〜3 まで回す
sum = sum + a[i][j]; // 1つずつ足していく
}
printf("行%dの合計 = %d\n", i
, sum
); }
}
int main(void)
{
// 3行4列の表(配列)a を作って数字を入れる
int a[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
// ★ ポインタ p を用意して、a をいったん入れる
int (*p)[4]; // 「4つ並んだ int の行」を指すポインタ
p = a; // p に a の先頭(行0)を入れる
// ★ 配列 a ではなく、ポインタ p を渡す書き方
calculate(p);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyDooYzjgZTjgajjga7lkIjoqIjjgpLoqIjnrpfjgZfjgabooajnpLrjgZnjgovplqLmlbAKdm9pZCBjYWxjdWxhdGUoaW50IGFbM11bNF0pCnsKICAgIGludCBpLCBqOwogICAgaW50IHN1bTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7ICAgLy8g6KGM44KSIDAsMSwyIOOBqOWbnuOBmQoKICAgICAgICBzdW0gPSAwOyAgICAgICAgICAgICAgICAvLyDjgZ3jga7ooYzjga7lkIjoqIjjgpIgMCDjgYvjgonjgrnjgr/jg7zjg4gKCiAgICAgICAgZm9yIChqID0gMDsgaiA8IDQ7IGorKykgeyAgIC8vIOWIl+OCkiAw44CcMyDjgb7jgaflm57jgZkKICAgICAgICAgICAgc3VtID0gc3VtICsgYVtpXVtqXTsgICAgLy8gMeOBpOOBmuOBpOi2s+OBl+OBpuOBhOOBjwogICAgICAgIH0KCiAgICAgICAgcHJpbnRmKCLooYwlZOOBruWQiOioiCA9ICVkXG4iLCBpLCBzdW0pOwogICAgfQp9CgppbnQgbWFpbih2b2lkKQp7CiAgICAvLyAz6KGMNOWIl+OBruihqO+8iOmFjeWIl++8iWEg44KS5L2c44Gj44Gm5pWw5a2X44KS5YWl44KM44KLCiAgICBpbnQgYVszXVs0XSA9IHsKICAgICAgICB7MSwgIDIsICAzLCAgNH0sCiAgICAgICAgezUsICA2LCAgNywgIDh9LAogICAgICAgIHs5LCAxMCwgMTEsIDEyfQogICAgfTsKCiAgICAvLyDimIUg44Od44Kk44Oz44K/IHAg44KS55So5oSP44GX44Gm44CBYSDjgpLjgYTjgaPjgZ/jgpPlhaXjgozjgosKICAgIGludCAoKnApWzRdOyAgLy8g44CMNOOBpOS4puOCk+OBoCBpbnQg44Gu6KGM44CN44KS5oyH44GZ44Od44Kk44Oz44K/CiAgICBwID0gYTsgICAgICAgIC8vIHAg44GrIGEg44Gu5YWI6aCt77yI6KGMMO+8ieOCkuWFpeOCjOOCiwoKICAgIC8vIOKYhSDphY3liJcgYSDjgafjga/jgarjgY/jgIHjg53jgqTjg7Pjgr8gcCDjgpLmuKHjgZnmm7jjgY3mlrkKICAgIGNhbGN1bGF0ZShwKTsKCiAgICByZXR1cm4gMDsKfQo=