중괄호를 사용한 배열 초기화: 컴파일러의 동작 공개
프로그래밍에서 array[100] =와 같이 중괄호를 사용하여 배열을 할당합니다. {0}는 값이 내부적으로 어떻게 초기화되는지에 대한 질문을 제기합니다. 이 표기법 뒤에 숨어 있는 마법을 파헤쳐 보겠습니다.
마법인가 아니면 컴파일러 논리인가?
일반적인 인식과 달리 마술은 관련되지 않습니다. 이 코드의 동작은 프로그래밍 언어 사양에 따라 결정됩니다.
C 사양(섹션 6.7.8.21): 지정되지 않은 배열 요소의 경우 포인터는 NULL로 초기화되고 산술 유형(char 포함) )는 0으로 설정됩니다.
C 사양(섹션 8.5.1.7): 지정되지 않은 배열 요소는 집계 초기화됩니다.
C의 빈 초기화 목록 : C는 array[100] = {};와 같은 빈 초기화 목록을 지원합니다. 배열의 모든 요소를 집계 초기화합니다.
컴파일러 생성 코드: 일반적으로 컴파일러는 배열의 각 요소를 지정된 값으로 설정하는 코드를 생성합니다. 그러나 컴파일러 및 최적화 설정에 따라 코드가 달라질 수 있습니다.
컴파일러의 동작에 대한 자세한 내용은 관련 질문인 "배열 0의 이상한 어셈블리"에서 빈 이니셜라이저 목록에 대해 생성된 어셈블리 코드를 참조하세요. -초기화."
위 내용은 C와 C에서 중괄호를 사용하여 배열을 초기화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!