LoginSignup
0
2

More than 5 years have passed since last update.

C言語入門~配列と文字列~

Last updated at Posted at 2019-01-25

配列

宣言と初期化

まず配列の宣言は下の通りです

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;
}
0
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2