> 백엔드 개발 > C++ > `t`, `&t[0]` 및 `t`에 대한 포인터가 동일한 주소를 갖는 이유는 무엇입니까?

`t`, `&t[0]` 및 `t`에 대한 포인터가 동일한 주소를 갖는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-26 08:12:09
원래의
139명이 탐색했습니다.

Why Do `t`, `&t[0]`, and a Pointer to `t` Have the Same Address?

t, &t[0] 및 t가 포인터로 변환된 이유는 동일한 주소를 갖습니다.

배열은 연속적인 메모리 블록입니다. 동일한 데이터 유형의 요소를 포함합니다. 배열을 선언하면 컴파일러는 메모리 블록을 할당하고 해당 블록 내의 각 요소에 대한 포인터를 생성합니다.

사례 1: t 및 &t[0]

t를 첨자 없이 단독으로 사용하면 배열에서 포인터로 변환되어 배열의 첫 번째 요소에 대한 포인터가 생성됩니다. 이 동작은 첫 번째 요소의 주소를 명시적으로 반환하는 &t[0]을 사용하는 것과 동일합니다. 따라서 t와 &t[0]은 동일한 값을 갖습니다.

사례 2: &t

그러나 t에 & 연산자를 적용하면 그렇지 않습니다. 배열에서 포인터로의 변환을 트리거합니다. 대신 &t는 t 자체의 주소를 직접 가져와 전체 배열에 대한 포인터가 됩니다.

메모리에서는 배열의 첫 번째 요소와 배열의 시작 부분이 동일한 위치에 있습니다. 따라서 포인터 t, &t[0] 및 u(t에 대한 포인터)는 모두 동일한 주소를 갖습니다.

출력 설명:

주어진 코드는 이것을 보여줍니다 동작:

int t[10];
int * u = t;

cout << t << " " << &t << endl;
cout << u << " " << &u << endl;
로그인 후 복사

출력:

0045FB88 0045FB88
0045FB88 0045FB7C
로그인 후 복사

출력에서는 t, &t[0] 및 u가 동일한 값(0045FB88)을 갖고 있음을 보여 포인터와 동일함을 확인합니다.

위 내용은 `t`, `&t[0]` 및 `t`에 대한 포인터가 동일한 주소를 갖는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿