[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코드를 컴파일하는 데 사용해야 할 수 있습니다.


답변