C에서 배열 요소의 주소를 사용할 수 있습니까? 다음 코드와 같이 끝 부분을 지나서 첨자를 통해 얻습니다. snippet?
int array[5]; int *array_begin = &array[0]; int *array_end = &array[5];
구체적으로 &array[5]는 C 표준을 준수합니까?
예, 코드는 C 표준을 준수합니다.
C99 초안에 따르면 표준:
§6.5.2.1, 단락 2:
대괄호 [] 안의 표현식이 뒤에 오는 후위 표현식은 배열 요소의 아래 첨자 지정입니다. object.
§6.5.3.2, 단락 3:
[& 연산자의] 피연산자가 [] 연산자의 결과인 경우 & 연산자나 []가 암시하는 단항 *가 모두 평가되지 않으며 결과는 다음과 같습니다. 마치 & 연산자가 제거되고 [] 연산자가 연산자로 변경된 것처럼
§6.5.6, 단락 8:
P 표현식이 배열 객체의 마지막 요소를 가리키는 경우 표현식(P) 1은 배열 객체의 마지막 요소 하나 다음을 가리킵니다.
기준 다음 발췌문은 다음과 같습니다.
따라서 &array[5] 표현식은 *(array 5)와 동일합니다. 배열의 마지막 요소를 지나 포인터가 역참조되지 않는 한 이는 표준에 따라 합법적입니다.
위 내용은 구독을 통해 C 배열의 끝을 지나서 주소를 얻는 것이 합법적인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!