文字列は配列で表される

配列は文字列を扱う時にも使います。
まずは、配列の宣言の復習です。

変数の型 配列名[ 要素数 ];

C言語では変数一つにつき、一つの文字しか格納できません。
文章(文字列)を表すときは、配列を使って文字列を格納します。

スポンサーリンク

サンプルプログラム

ソースファイル名:main.c

実行方法

上のソースを書き写して実行してください。

文字列の初期化の方法

先のも述べましたが、C言語で文字列を扱う時は、配列を使います。
文字列の初期化は、

char str[] = "文字列代入の例です。";

というように、宣言の時に、

変数の型 配列名[] = "文字列"

で、初期値を設定する事ができます。
文字列を初期化するときは、文字列を "" で括って表現します。

文字列の初期化は特殊?

文字列を初期化するときは char 型の配列を使います。
サンプルプログラムでは、

char str[] = "文字列代入の例です。";

というように文字列を初期化しています。
ここで一つ疑問があります。
str[] は、[]に配列の要素数を書いていません。
しかし、これは問題なくビルドすることができます。
配列は、宣言時に[] の中に要素数を書かないといけませんが、配列を初期化をして宣言する時は、[] の中に要素数無しで宣言することができます。 配列を初期化して宣言するときは、コンパイラが勝手に最適なサイズの配列を作ってくれます。

ただ、初期化と言っても

char str[];
str[] = "文字列代入の例です。"

という書き方はできませんので注意してください。

数字の配列を初期化する方法

文字列の初期化は "" を使って行いますが、数字の配列の初期化は

"10 5 3 2"

としても初期化できません。
これは、文字列として扱われてしまいます。

では、数字はどうやって初期化するのか?
以下がその方法になります。

変数の型 配列名[] = { 数, 数, 数 };

{} で括り、数と数の間を ","(カンマ)で区切ります。
サンプルプログラムの

char data[4] = { 10, 5, 3, 2 };

では、要素数に 4 を入れているのですが、配列を初期化して宣言しているので、

char data[] = { 10, 5, 3, 2 };

とすることもできます。 初期値なしで宣言する時は、大きさを指定する必要があるので注意してください。

// こちらは配列の大きさを宣言する必要はない
char str1[] = "テスト文字列";

// こちらは初期値がないので大きさの宣言が必要
char str2[ 256 ];

スポンサーリンク