Tips

【C言語で】#9 配列【ビンゴを作ろう】

【C言語で】#9 配列【ビンゴを作ろう】

C言語でBINGOを作ろう #9 配列

C言語でBINGOを作ろう!

C言語でBINGOを作ろう!

CUI上で動くビンゴゲームの完成目指してひっそりとプログラムの勉強を始めました。前回は変数の型や最大値、最小値を紹介しました。今回は配列を使ってみます。

もう夏休みも折り返し地点だYO!!

サンプルがほしい方は#11から読んでください。

開発環境

開発環境はこちらをご覧ください。

また、C言語の開発環境を構築したい場合は以下を参考にしてください。

C言語環境構築前編

C言語環境構築後編

コマンドプロンプトからサクラエディタを起動できるようにしてみた前編

コマンドプロンプトからサクラエディタを起動できるようにしてみた後編

本記事は以上の設定を行っている前提で説明を行います。

 

BINGOの記事一覧はこちら

 

配列とは

配列とは

配列とは、同じデータ型の変数をメモリ上に連続して確保したものです。ってかくと難しく感じますが、要は同じデータ型の複数の変数をまとめて扱えるようにしたものです。

numという名前の変数と配列を作成した場合、下のようなイメージです。

変数↓

num

要素数3の配列↓

nums

普通の変数numを使う場合は下のように書けばOKでした。

int num;

num = 10;

しかし、例えば上の図ではnumという配列は3個の箱が並んだ図になっていますが、「num」とだけ書いても、3つのうちのどの箱を使えばいいのかわかりません。

また、要素が何個あるのかもわかりません。そこで、配列を作る際は要素数を宣言し、使う際は前から何番目の箱なのか、番号(インデックス)で示します。

int num[3];

num[2] = 10;

上のように書いた場合、要素数3の配列を作り、num[2]に10を代入していることになります。

 

配列の作り方

配列を使うには、変数と同じように宣言してやる必要があります。宣言方法は何通りかあります。代表的な宣言方法は以下の通りです。

方法1 配列の中身(要素)まで決める

データ型 配列名[] = {値1,値2,・・・,値n};

int num[] = {0, 1, 2};

方法2 配列の数だけ決める

データ型 配列名[要素数]
int num[3]

 

 

配列を使ってみる

配列を使ってみる

では早速配列を使ってみましょう。

なお、何度も書きますが、C言語では変数は初期化しないと何が入っているのかわりません。必ず初期化してから利用してください。これは配列でも同様です。

配列を使う際も、変数と同じような手順で使います。

1.配列を作る

2.配列を初期化する

3.配列を使う

int型のnumという配列を作成して中身を初期化、値を代入、表示してみます。

やり方その1~配列を作るのと同時に初期化~

#include <stdio.h>
int main(void){
  /* 配列を作る&初期化 */
  int num[3] = {0, 10, 20};

  /* 配列を表示 */
  int i = 0;
  for(i = 0; i < 3; i++){
    printf("%d ", i);
  }

  return 0;
}

やり方その2~配列を作った後で初期化~

#include <stdio.h>
int main(void){

  /* 配列を作る */
  int num[3];

  /* 必要な変数を準備 */
  int length = sizeof(num) / sizeof(num[0]);
  int i = 0;

  /* 配列を初期化 */
  for(i = 0; i < length; i++){
    num[i] = i * 10;
  }

  /* 配列を表示 */
  for(i = 0; i < length; i++){
    printf("%d ", i);
  }

  return 0;
}

for文は配列の要素数だけ繰り返し動かすことが割とあります。その際に、やり方1のように要素数を「i < 3」といった形で指定すると、配列の要素数が変わった際に「i < 3」の部分も書き直す必要があります。
そこで、やり方2では8行目でsizeof()演算子※を利用して配列の長さ(要素数)を変数lengthに保存しています。これを利用して「i < length」の形でfor文を動かせば、配列の要素数を変更しても「i < length」の部分を書き直す必要はありません。

※おまけ参照

配列の注意事項

配列を使う場合、インデックスには注意しなければいけません。

配列のインデックスは0から始まるということです。要素数3であれば、次の図のようなインデックスとなります。

nums2

0から始まって3個なので、インデックスは0、1、2の3個です。要素数は3ですが、インデックスには3はありません。

また、配列の要素数が3の場合、4番目の要素やインデックス5の要素はありません。しかし、プログラム上はこれらを指定することができてしまいます。

もしも存在しないはずの配列の要素に触ってしまった場合、何が起こるかわかりません※。十分注意してください。

※詳細は割愛しますが、悪用しようとすれば意図的に利用することもできます。

おまけ
sizeof(大きさを調べたいもの)

で、大きさを調べることができます。例えば今回のように配列numがある場合、下のように書くと配列全体でどのぐらいの大きさになっているのかわかります。

sizeof(num)

また、配列の要素1個分の大きさは下のようにすれば求まります。

sizeof(num[0])

全体の大きさ / 1個分の大きさ で、全部で要素が何個あるのかがわかります。

 

宿題コーナー

毎回恒例、みなさんお楽しみの宿題のコーナーです。

前回の宿題と解答例

前回の宿題は、「夏休みなので今回は宿題無し!!やったね!!」でした。

そのため解答は以下の通りです。ありません。

解答例

良く復習しましたか?

 

今日の宿題

要素数5のint型の配列numを準備して値を0で初期化してください。

その後、numの要素に好きな値を代入してください。

最後に、numの要素をすべて表示してください。

 

次回は配列その2です。

 

BINGOの記事一覧はこちら

 

実践力が身につくC言語講座 連載リンク

競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載

アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載

パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載

Recent News

Recent Tips

Tag Search