C에서 배열을 0으로 초기화
Satishkumar Bharadwaj
2023년10월12일
이 튜토리얼에서는 C에서 배열을 0
으로 초기화하는 방법을 소개합니다.
C에서 배열의 선언은 다음과 같습니다.
char ZEROARRAY[1024];
전역 범위에서 런타임시 모두 0이됩니다. 로컬 배열 인 경우 속기 방법이 있습니다. 선언 및 초기화는 다음과 같습니다.
char ZEROARRAY[1024] = {0};
배열이 부분적으로 초기화 된 경우 초기화되지 않은 요소는 관련 데이터 유형의 값 0
을받습니다. 컴파일러는 작성되지 않은 항목을 0으로 채 웁니다.
이니셜 라이저를 지정하지 않으면 정적 저장소가있는 객체는 0으로 초기화됩니다. 선언은 다음과 같습니다.
static int myArray[10];
이니셜 라이저 목록이 비어 있거나 이니셜 라이저 목록에 0이 지정된 경우 배열은 0으로 초기화됩니다. 선언은 다음과 같습니다.
int number[5] = {};
int number[5] = {0};
배열을 초기화하는 가장 간단한 기법은 모든 요소를 반복하여 0
으로 설정하는 것이다.
#include <stdio.h>
int main(void) {
int numberArray[10], counter;
for (counter = 0; counter < 5; counter++) {
numberArray[counter] = 0;
}
printf("Array elements are:\n");
for (counter = 0; counter < 5; counter++) {
printf("%d", numberArray[counter]);
}
return 0;
}
출력:
Array elements are:
00000
C 라이브러리 함수memset()
사용
memset()
함수는 string.h
의 라이브러리 함수입니다. 특정 값으로 메모리 블록을 채우는 데 사용됩니다.
memset()
함수의 구문은 다음과 같습니다.
void *memset(void *pointerVariable, int anyValue, size_t numberOfBytes);
어디,
pointerVariable
은 채울 메모리 블록에 대한 포인터 변수입니다.anyValue
는 설정할 값입니다. 이것은 정수 값이지만 함수는이 값의 부호없는 문자 변환을 사용하여 메모리 블록을 채 웁니다.numberOfBytes
는 값에 설정할 바이트 수입니다.
이 함수는 메모리 영역 pointerVariable
에 대한 포인터를 반환합니다.
전체 프로그램은 다음과 같습니다.
#include <stdio.h>
#include <string.h>
void printArrayvalues(int anyArray[], int anyNumber) {
int index;
for (index = 0; index < anyNumber; index++) printf("%d ", anyArray[index]);
}
int main(void) {
int number = 10;
int arrayValues[number];
memset(arrayValues, 0, number * sizeof(arrayValues[0]));
printf("Array after memset()\n");
printArrayvalues(arrayValues, number);
return 0;
}
출력:
Array after memset()
0 0 0 0 0 0 0 0 0 0
배열을 0
이외의 값으로 초기화
gcc
를 사용하여0
이외의 값으로 배열을 초기화하는 것은 다음과 같습니다.
int myArrayValues[1024] = {[0 ... 1023] = -1};
배열의 모든 구성원은 차원을 생략하여 명시 적으로 초기화 할 수 있습니다. 선언은 다음과 같습니다.
int myArrayValues[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
컴파일러는 이니셜 라이저 목록에서 차원을 추론하고 다차원 배열의 경우 가장 바깥 쪽 차원 만 생략 할 수 있습니다.
int myPoints[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};