ページ 11

2次元配列について

Posted: 2017年4月16日(日) 16:06
by 補給タンク
こんにちは、今回2次元配列について質問があって投稿させていただきました。

#include <stdio.h>

void main(){
int a[3][4];          //int型の宣言???
int m,n;            //int型の宣言
// 二次元配列に値を代入
for(m = 0; m < 3; m++){     //変数mの初期化、条件式、インクリメント
for(n = 0; n < 4; n++){    //変数nの初期化、条件式、インクリメント
a[m][n] = m+n;      //???
}
}
// 成分の表示
for(m = 0; m < 3; m++){    //変数mの初期化、条件式、インクリメント
for(n = 0; n < 4; n++){    //変数nの初期化、条件式、インクリメント
printf("%d ",a[m][n]);   //????
}
printf("¥n");        //改行処理
}
}

このプログラムなのですが、for文の中身は大体ですが内容を理解できるのです。
問題はint a[3][4];のように、添字を使っているときの部分です。
特に上記プログラムを抜粋した以下の部分……

> int a[3][4];

これはまあ、宣言ですよね。ただこれ、この部分だけ中身を変えても実行結果が変わらないんですよね。
じゃあ何のために[]の中身を宣言するのか、がまず分からないのです。
試しに[]を空白にしてみたらプログラムは動きませんでした……。

> // 二次元配列に値を代入
> for(m = 0; m < 3; m++){
> for(n = 0; n < 4; n++){
> a[m][n] = m+n;

次にこの部分。for文の内容はまあ、把握できます。
ただ、4行目の a[m][n] = m+n; の意味がわからなくて途方にくれています。
なんとなーく最初に宣言した[]の中にそれぞれmとnを代入?したというのは分かるのですが、
その後のm+nの意味がわかりません。これ、どういう意味なんでしょうか………?

Re: 2次元配列について

Posted: 2017年4月16日(日) 16:38
by たいちう
> なんとなーく最初に宣言した[]の中にそれぞれmとnを代入?したというのは分かるのですが、
> その後のm+nの意味がわかりません。これ、どういう意味なんでしょうか………?

前半も間違ってます。
二次元配列の前に、まずは普通の一次元の配列を理解しましょう。

Re: 2次元配列について

Posted: 2017年4月16日(日) 19:02
by みけCAT
補給タンク さんが書きました:> int a[3][4];

これはまあ、宣言ですよね。ただこれ、この部分だけ中身を変えても実行結果が変わらないんですよね。
じゃあ何のために[]の中身を宣言するのか、がまず分からないのです。
要素を何個用意するかを決めるためですね。