>백엔드 개발 >C++ >C에서 배열의 주소가 첫 번째 요소에 대한 포인터의 주소와 동일한 이유는 무엇입니까?

C에서 배열의 주소가 첫 번째 요소에 대한 포인터의 주소와 동일한 이유는 무엇입니까?

DDD
DDD원래의
2024-11-22 08:08:10251검색

Why is the address of an array in C equivalent to the address of a pointer to its first element?

배열 주소와 변환된 포인터의 동등성 이해

C 프로그래밍 언어에서는 배열을 주소로 변환하는 것이 일반적인 관행입니다. 배열에서 포인터로의 변환을 사용하여 첫 번째 요소에 대한 포인터입니다. 이는 왜 배열의 주소가 변환된 포인터의 주소와 동일한지에 대한 의문을 제기합니다.

이 개념을 설명하기 위해 다음 코드를 고려해 보겠습니다.

출력 이 코드는 배열 주소와 변환된 포인터 주소가 동일함을 보여줍니다.

이 현상을 이해하려면 연관된 두 가지 별개의 의미를 인식해야 합니다. 기호 t:

  • 배열 표현식: 단독으로 사용하면 t는 배열 표현식으로 처리됩니다. 이 표현식은 출력 작업을 포함하여 대부분의 상황에서 배열의 첫 번째 요소(즉, &t[0])에 대한 포인터로 자동 변환됩니다.
  • 배열에 대한 포인터: & 연산자인 t는 배열 자체에 대한 포인터로 처리됩니다. 이 연산은 첫 번째 요소뿐만 아니라 전체 배열의 주소를 산출합니다.

우리 코드에서 출력의 첫 번째 줄에는 t(배열)의 주소와 &t( 배열에 대한 포인터). 배열은 연속적인 메모리 블록이므로 시작 주소가 동일합니다.

출력의 두 번째 줄에는 u의 주소(첫 번째 요소에 대한 변환된 포인터)와 &u의 주소(변환된 요소에 대한 포인터)가 표시됩니다. 바늘). 다시 말하지만, u는 &t[0]과 본질적으로 동일하기 때문에 이 주소는 동일합니다.

그러므로 배열의 주소가 포인터로 변환된 배열의 주소와 동일한 이유는 다음과 같다고 결론을 내립니다. 둘 다 배열이 차지하는 연속 메모리 블록의 시작 주소를 나타내기 때문입니다. 배열에서 포인터로의 변환은 전체 배열의 시작 위치와 동일한 메모리 위치를 갖는 배열의 첫 번째 요소에 대한 포인터를 생성하기 때문에 이러한 동등성은 유지됩니다.

위 내용은 C에서 배열의 주소가 첫 번째 요소에 대한 포인터의 주소와 동일한 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.