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 프로그래밍에 대한 자습서 섹션을 살펴보십시오!