2013-04-26 3 views
2

이것은 간단 해 보이지만 주위를 검색 할 때 찾을 수없는 것 같습니다.C 배열 초기화 모두 허용됩니까?

초기화 및 배열의 ​​두 가지 방법이 동일한 지 알아 보거나 선호하는 방법이 있는지 알고 싶습니다. ANSI C 표준은 이것에 대해 무엇을 말하고 있습니까?

int a[3] = {1, 2, 3}; 

및 ...

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

두 번째 코드가 엉망이라고 생각합니다. 변수의 이름이 필요합니다. –

+0

두 번째 작품? – ryrich

+0

감사합니다. @CoreyOgburn, 오타가 수정되었습니다. – mushroom

답변

7

int a[3] = {1, 2, 3};는 오케이입니다

그러나 int [] = {1, 2, 3};은 구문 오류입니다.

질문이 int a[] = {1, 2, 3};에 관한 것이라면 그것은 유효한 진술입니다.

5

처음에는 작동하지만 두 번째 것은 구문 오류가 발생합니다. 또한 sth를 사용하는 경우. 이 같은 :

int a[5]={1}; 

다른 4 개 정수는 0

+0

이것은 좋은 코멘트이지만 질문에 대답하지 않습니다. 추가로 대답하거나 @Deepu 응답을 추가 할 수 있습니까? – fotanus

+0

@fotanus 상기시켜 줘서 고마워. –

1

당신이 당신의 배열에 더 많은 공간을 원하는 당신은 단지 선언에 그 중 일부를 설정하려는 경우 배열의 크기는 일반적으로 사용된다 추가로 초기화됩니다 . 다른 경우, 필자는 실수로 배열 크기에 대한 잘못된 값 때문에 낮은 크기로 인해 더 많은 크기 또는 컴파일 오류를 방지하기 때문에 개인적으로 두 번째 표기법을 선호합니다. 크기에 대한 const 값을 가지고 있으며 몇 번 사용하면 첫 번째 표기법이 더 안정적입니다. 귀하의 답변은 귀하의 프로그램에 달려 있습니다.

int a[CONST_SIZE] = {1,2,3}; 
int a[] = {1, 2, 3}; 
1

나는 두 번째 것이 틀렸다고 생각합니다. 하지만 두 번째 줄은 다음과 같습니다.

int b[] = {1, 2, 3}; 

두 줄의 결과는 똑같습니다.
두 배열의 배열 크기는 3 * sizeof(int)입니다.
어떤 라인을 사용할지 결정하는 것이 좋습니다. 첫 번째 줄의 장점은 대괄호 안의 요소를 계산하지 않고도 배열 크기를 쉽게 볼 수 있지만 소스 코드 파일에서 1 바이트 이상을 사용한다는 것입니다.