配列使い方2:参考ページ 、ポインタ操作:参考ページ

配列の使い方2の特別版
(個数を記憶する変数を使わない任意個数管理)

C言語の配列は、実行後に配列サイズを変更できません。
よって、そのアプリケーションで使うデータ数が決まっていない場合、 使うであろう十分な要素数の配列にして、 先頭要素から順番に詰めて記憶する取り扱いをしました。
この時、『配列に何個まで記憶されているかを記憶する変数』と 一緒に使ってきましたが、 このような変数を使わなくても、管理できる場合があります。

それは、配列の各要素を順番に処理するだけのようなデータの場合です。
このような場合は、配列においてデータの並びが終わった区切りが分かればいいので、 データとして使わないような値を、終端値と決めて、要素に埋め込んで使います。

C言語において、このような管理をする代表的なデータが文字列です。
C言語では文字列を記憶する型がなく、文字コードが並ぶ先頭の文字を指すポインタで管理します。 そして、その並びの終端値'\0' のコードと決めて使っています。

具体例

例えば試験点数のデータが数件あるとして、それを配列で管理させる例で示します。
この場合、負の点数がないので例えば-99を 情報の区切りまたは終端と決めて使います。
以下は、数字以外や負のキー入力データまで、配列へのデータ追加を繰り返す関数 input_u を実行した後、 入力したデータを列挙しているプログラムです。

                        (step1)