配列#
宣言と初期化##
まず配列の宣言は下の通りです
int array[666];
//二次元配列
int array2[2][3];
要素型 変数名[要素数];
このように宣言します.
これだと不確定要素が代入されてるので怖いです.初期化しましょう.
//全部0で初期化
int array[666] = {0};
//{1,2,3,0,0}と初期化
int array2[5] = {1,2,3,0,0};
//二次元配列
int array3[2][3] = {
{11,22,33,},
{44,55,66,}
};
//文字配列の初期化はこうなの
//初期化子の個数から配列の要素数が決まるから、要素数は省略してもいいんだって
char string[] = {'s','t','r','\0'};
char str[] = "str";
配列の操作##
1.コピー###
for文で要素1つずつ回して行きます.
#define NUMBER N
で要素数を定義している仮定です.
ちなみにこれはオブジェクト形式マクロといって,NUMBERのことをマクロ名というらしいす.
for (i = 0; i < NUMBER; i++){
ary2[i] = ary1[i];
}
ary2 = ary1
みたいに代入するのはムリです.
for文とかで回しましょう.
2.配列の要素に値を読み込む###
下の通りです.
for (i = 0; i < NUMBER; I++){
scanf("%d", &x[i])
}
//文字配列
char str[48];
// &strって書かないことに注意
scanf("%s", str);
3.配列の大きさ###
sizeof演算子で求めます
sizeof(array)/sizeof(array[0])
関数に引き渡し###
# include <stdio.h>
// constは受け取る配列の要素の値を変更しないことを宣言する
//配列を受け取る仮引数に要素数は不要
int str_count(const char s[])
{
int count = 0;
// while文でs[count]がNULLになるまで回します
while(s[count])
count++;
return count;
}
int main()
{
char str[128];
printf("文字列を入力:");
scanf("%s", str);
printf("文字列\"%s\"の長さは%dです\n", str, str_count(str));
return 0;
}