C 및 C에서 Index[array]로 배열 액세스
전통적인 배열 액세스 구문 2[arr]와 관련된 고전적인 인터뷰 질문에는 프로그래머들 사이에 호기심을 불러일으켰습니다. 배열의 세 번째 요소에 값을 할당하는 이 구문은 배열 이름과 인덱스의 순서가 뒤바뀌기 때문에 이상하게 보입니다.
C/C 사양에 따르면 이 비정통적인 접근 방식은 실제로 유효합니다. . C99 표준의 6.5.2.1 단락 1에서는 [] 연산자에 대한 인수에 "객체 유형에 대한 포인터" 유형의 표현식과 정수 표현식이 포함되어 있음을 명시적으로 명시하고 있습니다.
또한 단락 2에서는 [] 연산자는 (*((E1) (E2)))와 동일합니다. 여기서 E1은 배열 객체(또는 첫 번째 요소에 대한 포인터)를 나타내고 E2는 정수 인덱스를 나타냅니다. 이 정의는 연산자의 기능을 개략적으로 설명하지만 인수 순서에 어떤 제한도 두지 않습니다.
이는 인덱스가 배열 이름 앞에 오는 2[arr]와 같은 표현식이 구문상 유효하고 의미상 정확합니다. 표현식은 *(2 arr)로 평가되며 배열의 기본 주소에 2가 추가됩니다. 결과적으로 배열의 세 번째 요소가 성공적으로 타겟팅되고 수정되었습니다.
따라서 2[arr]의 역방향 구문은 단순한 컴파일러 트릭이 아니라 C 및 C 언어의 합법적인 기능으로, 프로그래머가 액세스할 수 있습니다. 비전통적이지만 완전한 기능을 갖춘 방식으로 요소를 배열합니다.
위 내용은 C와 C에서 `2[arr]`이 작동하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!