2次元配列について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
補給タンク
記事: 10
登録日時: 8年前

2次元配列について

#1

投稿記事 by 補給タンク » 8年前

こんにちは、今回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の意味がわかりません。これ、どういう意味なんでしょうか………?

たいちう
記事: 418
登録日時: 14年前

Re: 2次元配列について

#2

投稿記事 by たいちう » 8年前

> なんとなーく最初に宣言した[]の中にそれぞれmとnを代入?したというのは分かるのですが、
> その後のm+nの意味がわかりません。これ、どういう意味なんでしょうか………?

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

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 2次元配列について

#3

投稿記事 by みけCAT » 8年前

補給タンク さんが書きました:> int a[3][4];

これはまあ、宣言ですよね。ただこれ、この部分だけ中身を変えても実行結果が変わらないんですよね。
じゃあ何のために[]の中身を宣言するのか、がまず分からないのです。
要素を何個用意するかを決めるためですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

“C言語何でも質問掲示板” へ戻る