C言語にも他の言語と同様に配列(array)が使えます。
配列は同じ型のデータ(値)をひとまとまりの塊として扱うのに便利なものです。
この記事ではC言語の配列の宣言方法、初期化の方法、要素の指定方法などをまとめていきます。
C言語の配列
C言語にも他の言語と同様に配列(array)が使えます。
C言語の配列の宣言
C言語の配列は以下のように宣言します。
C言語の配列の宣言
型 名前[ 要素の数 ];
型 名前[ 要素の数 ];
char str[ 10 ] ; int num[ 10 ] ;
C言語の配列の初期化
C言語の配列は以下のように初期化できます。
char str[ 10 ] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' } ; int num[ 10 ] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 , 9} ;
文字列に関しては直接指定して初期化も可能です。
int main() { char str[ 10 ] = "012345678"; printf( "%s\n", str ); return 0; }
ただし文字列で初期化する際は最後に「NULL文字」が1つ付加されるので長さに注意が必要です。
C言語の配列の要素番号
C言語の配列の要素番号は「0」から始まります(0相対)。
つまり「str[ 10 ]」と宣言して値を設定したり参照したりする場合は
str[ 0 ] = '0' ; str[ 1 ] = '1' ; str[ 2 ] = '2' ; str[ 3 ] = '3' ; str[ 4 ] = '4' ; str[ 5 ] = '5' ; str[ 6 ] = '6' ; str[ 7 ] = '7' ; str[ 8 ] = '8' ; str[ 9 ] = '\0' ;
になり「str[ 10 ]」に値を設定したり参照すると動作は不定になり、プログラムで思わぬ不具合を発生させてしまいます。
C言語の配列のアドレス操作
C言語の配列も他の型ど同様に「メモリ上のアドレス(番地)」が割り振られています。
そのアドレスは「&変数名[ 要素番号 ] 」で表現することができます。
つまり「str[ 10 ]」と宣言した配列の各要素のアドレスは
&str[ 0 ] &str[ 1 ] &str[ 2 ] &str[ 3 ] &str[ 4 ] &str[ 5 ] &str[ 6 ] &str[ 7 ] &str[ 8 ] &str[ 9 ]
で表現することができ、かつ配列の先頭要素のアドレスは「&」と「要素番号」を省略できます。
となります。
配列を引数に持つ関数
配列を引数に持つ関数は以下のように作ることができます。
#include <stdio.h> void sub( char* ) ; int main() { char param[ 10 ] = "012345678"; sub( param ) ; //配列の先頭アドレスなので「&」と「[0]」は省略可能 return 0; } void sub( char *param ) { printf( "%s\n", param ) ; //配列の先頭アドレス printf( "%c\n", *param ) ; printf( "%c\n", param[ 0 ] ) ; printf( "%c\n", param[ 1 ] ) ; }
このソースの実行結果は
012345678 0 0 1
になります。
まとめ
配列を利用すれば同じ型の値をひとまとまりの塊として利用でき、文字列などを使用するのにとても便利です。
(文字列・・・複数の文字が並び最後にNULL文字が付加されたもの。)