웹사이트 검색

C에서 배열 초기화


이 기사에서는 C에서 배열을 초기화하는 방법을 살펴보겠습니다.

이 작업을 수행할 수 있는 여러 가지 방법이 있으므로 하나씩 나열하겠습니다. 시작하자!

방법 1: 이니셜라이저 목록을 사용하여 어레이 초기화

이니셜라이저 목록은 목록 순서대로 배열의 요소를 초기화합니다.

예를 들어 아래 스니펫을 고려하십시오.

int arr[5] = {1, 2, 3, 4, 5};

{1, 2, 3, 4, 5} 요소를 순서대로 사용하여 크기 5의 배열을 초기화합니다.

이는 arr[0] = 1, arr[1] = 2 등을 의미합니다.

0에서 4까지의 모든 요소를 초기화할 필요는 없습니다. 인덱스 0에서 2까지만 초기화할 수도 있습니다.

다음 코드도 유효합니다.

int arr[5] = {1, 2, 3};

그러나 이제 arr[4]arr[5]는 여전히 쓰레기 값으로 남아 있으므로 주의해야 합니다!

모든 요소가 포함된 초기화 목록을 사용하는 경우 배열의 크기를 언급할 필요가 없습니다.

// Valid. Size of the array is taken as the number of elements
// in the initializer list (5)
int arr[] = {1, 2, 3, 4, 5};

// Also valid. But here, size of a is 3
int a[] = {1, 2, 3};

모든 요소를 0으로 초기화하려면 이에 대한 바로 가기가 있습니다(0에만 해당). 인덱스를 0으로 간단히 언급할 수 있습니다.

#include <stdio.h>

int main() {
    // You must mention the size of the array, if you want more than one
    // element initialized to 0
    // Here, all 5 elements are set to 0!
    int arr[5] = {0};
    for (int i=0; i<5; i++) {
        printf("%d\n", arr[i]);
    }
    return 0;
}

산출

0
0
0
0
0

다차원 배열을 사용하는 경우 배열이 행 방식으로 저장되기 때문에 하나의 블록에서 모두 초기화할 수 있습니다.

#include <stdio.h>

int main() {
    int arr[3][3] = {1,2,3,4,5,6,7,8,9};
    for (int i=0; i<3; i++)
        for (int j=0; j<3; j++)
            printf("%d\n", arr[i][j]);
    return 0;
}

산출

1
2
3
4
5
6
7
8
9

float, char, char* 등과 같은 다른 데이터 유형에도 비슷한 방법을 사용할 수 있습니다.

#include <stdio.h>

int main() {
    // Array of char* elements (C "strings")
    char* arr[9] = { "Hello", [1 ... 7] = "JournalDev", "Hi" };
    for (int i=0; i<9; i++)
        printf("%s\n", arr[i]);
    return 0;
}

산출

Hello
JournalDev
JournalDev
JournalDev
JournalDev
JournalDev
JournalDev
JournalDev
Hi

기억하세요. [1 … 7] = "Journaldev\를 사용하는 이 방법은 모든 컴파일러에서 작동하지 않을 수 있습니다. 저는 Linux의 GCC에서 작업합니다.

방법 2: for 루프를 사용하여 C에서 배열 초기화

for 루프를 사용하여 배열의 요소를 설정할 수도 있습니다.

#include <stdio.h>

int main() {
    // Declare the array
    int arr[5];
    for (int i=0; i<5; i++)
        arr[i] = i;

    for (int i=0; i<5; i++)
        printf("%d\n", arr[i]);

    return 0;
}

산출

0
1
2
3
4

방법 3: 지정된 초기화 프로그램 사용(gcc 컴파일러에만 해당)

gcc를 C 컴파일러로 사용하는 경우 지정된 초기화 프로그램을 사용하여 배열의 특정 범위를 동일한 값으로 설정할 수 있습니다.

// Valid only for gcc based compilers
// Use a designated initializer on the range
int arr[9] = { [0 ... 8] = 10 };

숫자 사이에 공백이 있고 세 개의 점이 있습니다. 그렇지 않으면 컴파일러가 소수점이라고 생각하고 오류를 던질 수 있습니다.

#include <stdio.h>

int main() {
    int arr[9] = { [0 ... 8] = 10 };
    for (int i=0; i<9; i++)
        printf("%d\n", arr[i]);
    return 0;
}

출력(gcc 전용)

10
10
10
10
10
10
10
10
10

우리는 이것을 이전 초기화 목록 요소와 결합할 수도 있습니다!

예를 들어 배열 인덱스 arr[0], arr[8]만 0으로 설정하고 나머지는 10으로 초기화되도록 지정합니다!

#include <stdio.h>

int main() {
    int arr[9] = { 0, [1 ... 7] = 10, 0 };
    for (int i=0; i<9; i++)
        printf("%d\n", arr[i]);
    return 0;
}

산출

0
10
10
10
10
10
10
10
0

결론

이 기사에서는 다양한 방법을 사용하여 C 배열을 초기화하는 방법을 배웠습니다.

유사한 기사를 보려면 C 프로그래밍에 대한 자습서 섹션을 살펴보십시오!