2012-06-05 4 views
2

배열의 요소를 초기화하지 않으면 디버그 할 때 임의의 큰 번호가 할당 된 것을 볼 수 있습니다. 숫자가 어떻게 결정되는지 궁금하십니까?C 배열 요소 초기화

답변

3

이들은 배열의 공간이 할당 된 메모리에 이미있는 값입니다. 따라서 여기에는 "결정"이 없습니다.

2

기술적으로 초기화되지 않은 변수를 읽는 것은 정의되지 않은 동작입니다. 남은 메모리 쓰레기에서부터 컴파일러가 미리 정의한 값에 이르기까지 다양합니다.

+0

아니요, 정의되지 않은 동작은 아닙니다. 이러한 값이 해당 유형의 트랩 표현에 해당하는 경우에만 정의되지 않은 동작입니다. 정수 타입에 대한 트랩 표현을 가진 현재 아키텍처에 대해서는 잘 모릅니다. –

+0

@Jens Gustedt : 실제로,이 상황을 무엇이라고 부르는 지에 관한 다른 관련 주제에 대한 논의가있는 것으로 보입니다. 제안? – Tudor

+0

C11은 ** 불확정 값 ** 지정되지 않은 값 또는 트랩 표현 및 ** 지정되지 않은 값 ** 이 국제 표준에서 어떤 값이 선택되는지에 대한 요구 사항이 부과되지 않는 관련 유형의 유효한 값 어떤 인스턴스 –

0

배열을 선언하면 스택 포인터가 추가되고 첫 번째 요소의 주소가 반환됩니다. 즉, 메모리의 데이터는 변경되지 않습니다.

+0

당신의 대답은 내가 묻고있는 것과 아무런 관련이 없습니다. 무작위 데이터가 어떻게 초기화되는지 (또는 어떻게 결정되는지), 초기화되지 않은 배열 요소 –