連載
【問題9】配列とポインタの深い関係:完全マスター! 組み込みC言語プログラミング(10)(1/4 ページ)
C言語を使ったマイコン制御プログラムの“イロハ”を解説する本連載。今回はC言語の難所の1つ、ポインタに関する問題を解説していきます。
本連載では、これから組み込みシステムのプログラミングを学びたい人向けに、C言語を使ったマイコン制御プログラムの“イロハ”を解説していきます。
毎回少しずつステップアップしていけるよう、本文の最後で問題を出し、次回その解答と解説を紹介していきます。では早速、前回の問題を振り返ってみましょう。
問題9 「後入れ後出し(LIFO)で入力された数を表示するプログラムを、ポインタを使って書く」
前回の宿題(問題9):
負数が入力されるまで繰返し整数を入力し、負数が入力されたならばLIFO(後入れ先出し)の順番で、入力された整数を表示するプログラムを、添字ではなくポインタを使って書いて下さい。
おかげさまでこの連載も10回目となりました。今回はC言語の難所の1つ、ポインタに関する問題です。
問題9は、前回の配列に関する問題「LIFO(後入れ先出し)の順番で、入力された整数を逆順に表示する」を、ポインタを使ってプログラムを作る問題でした(完全マスター! 組み込みC言語プログラミング(9):【問題8】繰返しと配列は相性がいい)。実は、C言語の配列とポインタは関係が深く、具体的には、
- 配列とポインタはともに派生型である。
- 配列の名前はポインタとして扱われる。
- ポインタに対する演算は、配列の添字と同等に作用される。
があります。
それでは解答を発表しましょう。
#include <stdio.h>
int main(void)
{
int n, data[100], *p;
printf("数を入力してください->");
scanf("%d", &n);
p = data;
while (n >= 0) {
*p = n;
p++;
printf("数を入力してください->");
scanf("%d", &n);
}
while (p > data) {
p--;
printf("%d\n", *p);
}
}
問題9の解答「lifo3.c」
lifo3.cを実行すると、次のような結果になります。
Copyright © ITmedia, Inc. All Rights Reserved.
