【問題8】繰返しと配列は相性がいい:完全マスター! 組み込みC言語プログラミング(9)(1/2 ページ)
C言語を使ったマイコン制御プログラムの“イロハ”を解説する本連載。今回は繰り返しの処理を行う際に便利な「配列」について学びます。
本連載では、これから組み込みシステムのプログラミングを学びたい人向けに、C言語を使ったマイコン制御プログラムの“イロハ”を解説していきます。
毎回少しずつステップアップしていけるよう、本文の最後で問題を出し、次回その解答と解説を紹介していきます。では早速、前回の問題を振り返ってみましょう。
問題8 「後入れ後出し(LIFO)で入力された数を表示する」
前回の宿題(問題8):
負数が入力されるまで繰返し整数を入力し、負数が入力されたならばLIFO(後入れ先出し)の順番で、入力された整数を表示するプログラムを作成して下さい
問題8は「後入れ後出し(LIFO)で入力された数を表示する」でした。
それでは解答を発表します。
#include <stdio.h> int main(void) { int n, i, data[100]; printf("数を入力してください->"); scanf("%d", &n); i = 0; while (n >= 0) { data[i] = n; i++; printf("数を入力してください->"); scanf("%d", &n); } while (i > 0) { i--; printf("%d\n", data[i]); } }
lifo.ccを実行すると、次のような結果になります。
配列の使い方
配列(array)は、「共通の名前を使って、複数のデータを扱うデータ構造」をいいます。
C言語で配列を使うには、まず変数を宣言します。
int n, i, data[100];
ここで、nとiは通常の変数ですが、dataは配列と解釈されます。C言語の宣言では、名前の後ろにブラケット([と])を記述することで配列を表します。
変数はデータを格納する箱のようなものですが、nとiとdataは次のようにイメージできます。
C言語の配列は、「同じ型のデータがメモリ上に連続して割り付けられる」約束になっています。
dataはintで宣言されているので、int型から派生される「intの配列」です。また、ブラケットに囲まれた100は配列の要素数(「配列の大きさ」と呼ぶ)を表しています。つまりdataは100個のintが連続する配列です。
プログラムで配列にアクセスするときには、data[0]、data[1]、data[2] 〜 data[99]のように、添字を付けます。添字とは配列の各要素を指示するための数値(整数でなければならない)をいいます。
C言語の配列の添字は0から始まります。dataには100個の要素があるので、添字は0から99までとなります。
添字に変数を書くこともできます。例えば「dataを0クリアする」プログラムは、
for (i = 0; i < 100; i++) data[i] = 0;
となります。添字をiとして、for文で0から99までカウントアップしているのです。いずれにしても、配列のアクセス単位は要素だということです。
Copyright © ITmedia, Inc. All Rights Reserved.