C言語の配列の宣言方法、初期化、ポインタ、関数などの使い方

記事内に広告が含まれています。

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 ]

で表現することができ、かつ配列の先頭要素のアドレスは「&」と「要素番号」を省略できます。

&str[ 0 ]—>str
&str[ 1 ]—>str[1]

となります。

配列を引数に持つ関数

配列を引数に持つ関数は以下のように作ることができます。

#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文字が付加されたもの。)

タイトルとURLをコピーしました