[c] C에서 배열을 0으로 초기화하는 방법은 무엇입니까?
C에서 전역으로 큰 null 배열이 필요합니다. 입력하는 것 외에도이 작업을 수행 할 수있는 방법이 있습니까
char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };
?
답변
전역 변수와 정적 변수는 자동으로 0으로 초기화됩니다. 당신이 단순히 있다면
char ZEROARRAY[1024];
전역 범위에서는 런타임에 모두 0입니다. 그러나 실제로이 있습니다 로컬 배열이 있다면 속기 구문. 배열이 부분적으로 초기화 된 경우 초기화되지 않은 요소는 적절한 유형의 값 0을받습니다. 당신은 쓸 수 있습니다 :
char ZEROARRAY[1024] = {0};
컴파일러는 쓰지 않은 항목을 0으로 채 웁니다. 또는 memset
프로그램 시작시 어레이를 초기화하는 데 사용할 수 있습니다 .
memset(ZEROARRAY, 0, 1024);
변경하고 모든 0으로 다시 설정하려는 경우 유용합니다.
답변
배열을 0 이외의 값으로 초기화하려면 gcc
다음을 수행하십시오.
int array[1024] = { [ 0 ... 1023 ] = -1 };
이것은 C99 지정 초기화 프로그램의 GNU 확장입니다 . 이전 GCC에서는 -std=gnu99
코드를 컴파일하는 데 사용해야 할 수 있습니다.