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 중국어 웹사이트의 기타 관련 기사를 참조하세요!