36.1シナリオ


整列


配列は同じ資料型の変数を一列に並べる形式である.
反復文を組み合わせると、連続および反復の値を容易に処理できます.

アレイ宣言


リポジトリ名[サイズ];
データ型配列名[サイズ]={値、値、値};
  • 配列は、変数名に[ ] (대괄호)を付けてサイズを設定します.
  • 配列を宣言して値を初期化する場合は、{ } (중괄호)を使用します.
  • #include <stdio.h>
    
    int main()
    {
        int numArr[10] = { 11, 22, 33, 44, 55, 66, 77, 88, 99, 110 };    // 배열을 생성하고 값 할당
    
        printf("%d\n", numArr[0]);    // 11: 배열의 첫 번째(인덱스 0) 요소 출력
        printf("%d\n", numArr[5]);    // 66: 배열의 여섯 번째(인덱스 5) 요소 출력
        printf("%d\n", numArr[9]);    // 110: 배열의 열 번째(인덱스 9) 요소 출력
    
        return 0;
    }
    
    
  • 配列を宣言して値を初期化する場合、値の個数は配列のサイズより小さくてもよいが、大きくはならない.
  • を使用して配列に値を割り当てる方法は、配列を宣言するときにのみ使用でき、宣言された配列には使用できません.
  • 要素

  • アレイに格納された値の空間を{ }と呼ぶ.
  • 配列で各要素にアクセスするには、配列の後に요소(element)を使用して各要素のインデックスを指定するだけです.
  • 配列[インデックス]
  • グループのインデックスは常にゼロから始まります.したがって、配列numarrの最初の要素はnumar[0.
  • ]である

    注意)配列宣言と配列インデックス


    配列は、宣言時および配列内の要素に近い場合に[ ] (대괄호)を使用します.
    同じ記号を使いますが、別々に考えます.
    配列を宣言する場合、[ ]は変数が配列であることを示し、サイズはいくらであるかを示し、配列を使用する場合、[ ]は配列内の要素にアクセスすることを示す.
    また、要素がゼロの配列は宣言できません.配列は、宣言時に常に1より大きいサイズです.ただし、配列にアクセスすると、インデックスはゼロから始まります.メモリアドレスがゼロから始まるため、配列のインデックスはゼロから始まります.前の配列もポインタなので、インデックスが0から始まると要素アクセスとポインタ演算が一致します.

    注)アレイ宣言時の寸法の作成


    配列を宣言するときに値を初期化する場合は、配列のサイズを省略できます.
    ❗初期化しない場合は省略できません.
    データ型配列名[]={値、値、値];
    int numArr1[] = { 11, 22, 33, 44, 55, 66, 77, 88, 99, 110 };    // 배열의 크기 생략
    int numArr2[];    // 컴파일 에러

    要素に値を割り当てる


    すべての要素0にリセット

  • 配列のすべての要素を0に初期化するには、宣言時に[ ]が割り当てられます.
  • 0を1つずつリストしなくても、すべての要素は0に初期化されます.
  • データ型配列名[サイズ]={0,}
    #include <stdio.h>
    
    int main()
    {
        int numArr[10] = { 0, };      // 배열의 요소를 모두 0으로 초기화
    
        printf("%d\n", numArr[0]);    // 0: 배열의 첫 번째(인덱스 0) 요소 출력
        printf("%d\n", numArr[5]);    // 0: 배열의 여섯 번째(인덱스 5) 요소 출력
        printf("%d\n", numArr[9]);    // 0: 배열의 열 번째(인덱스 9) 요소 출력
    
        return 0;
    }

    配列内の要素に値を割り当てる


    配列は{ 0, }で、要素に近づくと値を割り当てることができます.
    配列[インデックス]=値;
    #include <stdio.h>
    
    int main()
    {
        int numArr[10];     // 크기가 10인 배열 선언
        
        numArr[0] = 11;     // 인덱스가 0인 배열의 요소에 값 할당
        numArr[1] = 22;     // 인덱스가 1인 배열의 요소에 값 할당
        numArr[2] = 33;     // 인덱스가 2인 배열의 요소에 값 할당
        numArr[3] = 44;     // 인덱스가 3인 배열의 요소에 값 할당
        numArr[4] = 55;     // 인덱스가 4인 배열의 요소에 값 할당
        numArr[5] = 66;     // 인덱스가 5인 배열의 요소에 값 할당
        numArr[6] = 77;     // 인덱스가 6인 배열의 요소에 값 할당
        numArr[7] = 88;     // 인덱스가 7인 배열의 요소에 값 할당
        numArr[8] = 99;     // 인덱스가 8인 배열의 요소에 값 할당
        numArr[9] = 110;    // 인덱스가 9인 배열의 요소에 값 할당
    
        printf("%d\n", numArr[0]);    // 11: 배열의 첫 번째(인덱스 0) 요소 출력
        printf("%d\n", numArr[5]);    // 66: 배열의 여섯 번째(인덱스 5) 요소 출력
        printf("%d\n", numArr[9]);    // 110: 배열의 열 번째(인덱스 9) 요소 출력
    
        return 0;
    }

  • 要素を出力する場合と同様に、[ ]にインデックスを指定し、値を割り当てるだけです.

  • 配列範囲外のインデックスにアクセスすると、配列ではなく他のメモリ領域にアクセスします.
  • #include <stdio.h>
    
    int main()
    {
        int numArr[10] = {11, 22, 33, 44, 55, 66, 77, 88, 99, 110};    // 크기가 10인 배열 선언
        
        printf("%d\n", numArr[-1]);    // 음수이므로 잘못된 인덱스
        printf("%d\n", numArr[10]);    // 배열의 범위를 벗어난 인덱스
        printf("%d\n", numArr[20]);    // 배열의 범위를 벗어난 인덱스
    
        return 0;
    }
    
    /* 
    실행 결과
    -858993460 (쓰레기 값)
    -858993460 (쓰레기 값)
    13651968   (쓰레기 값)
    */
    インデックスを使用して負の値または配列サイズを超えたインデックスを指定しても、コンパイルエラーは発生しません.
    ただし、実行時にゴミ値が出力されます.
    ►つまり、アレイではなく他のメモリ領域にアクセスします.
    したがって、
  • は、配列の範囲を超えてアクセスして値を割り当てると、予期せぬメモリに値が格納され、プログラムが正常に動作しない可能性があります.
  • ソース


    https://dojang.io/mod/page/view.php?id=292
    https://dojang.io/mod/page/view.php?id=293
    https://dojang.io/mod/page/view.php?id=294
    https://dojang.io/mod/page/view.php?id=295