連載
【問題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.