C言語の配列について
初期化
int型の配列を宣言(要素数10)
int array[10];
宣言と同時に値を設定
//指定されていない要素は0で初期化される int array[10] = {1,2,3,4,5};
//サイズを指定しないと指定した初期値の数だけ要素が確保される。この場合は要素数5。 int array[] = {1,2,3,4,5};
文字列型配列
C言語では文字列は配列で扱う。
//helloの1文字づつを配列に格納 char string[] = "hello";
string配列の中身は以下のように初期化される。
string[0] -> 'h'
string[1] -> 'e'
string[2] -> 'l'
string[3] -> 'l'
string[4] -> 'o'
string[5] -> '\0' //\0はヌル文字
'\0'ってなんだ?
'\0'はヌル文字とよばれるもの。
文字列の最後は必ずヌル文字(\0)で終わる。
上記の宣言は下記の宣言と等価。
char string[] = {'h', 'e', 'l', 'l', 'o', '\0'};
文字列のプリント
char string[] = "hello"; printf("%s\n", string); //hello
終端のヌル文字に出会うまでプリントされる。
なので上記は下記のようにも書ける。
int i; char string[] = "hello"; for (i = 0; string[i] != '\0'; i++) { printf("%c", string[i]); } printf("\n")
二次元配列
二次元配列は以下のように宣言する。
int array[2][2] = { {1, 2}, {3, 4} };
array[0][0] -> 1
array[0][1] -> 2
array[1][0] -> 3
array[1][1] -> 4
注意事項
配列の範囲外の要素を参照した場合でもエラーが発生しない。
/* array.c */ #include <stdio.h> int main () { //5つの要素からなる配列を宣言し、0で初期化 int n[5] = {0}; //配列の範囲外の要素を参照 printf("%d\n", n[7]); return 0; }
上記のコードを実行した場合下記のような出力になり、特にエラーは起きない。
$ gcc -Wall -o array array.c $ ./array -1074709032 $ ./array -1074037816
予告
明日はポインターについて勉強します。