배열 주소 및 포인터 변환 이해
C에서 배열과 포인터는 밀접하게 관련되어 있지만 그 관계를 이해하는 것은 까다로울 수 있습니다. 주제를 자세히 살펴보기 위해 다음 코드 조각을 살펴보겠습니다.
int t[10]; int * u = t; cout << t << " " << &t << endl; cout << u << " " << &u << endl;
관찰한 출력은 다음과 같습니다.
0045FB88 0045FB88 0045FB88 0045FB7C
출력 해독
u(0045FB88)의 주소는 해당 주소의 첫 번째 요소를 가리키므로 이해할 수 있습니다. 배열 t. 그런데 t가 포함된 표현식을 분석할 때 혼란스러운 부분이 발생합니다.
배열-포인터 변환과 배열 주소 비교
이 동작을 이해하는 열쇠는 t가 표현식에서 사용되는 방식에 있습니다. .
따라서 &t는 배열의 첫 번째 요소에 대한 포인터가 아니라 전체 배열에 대한 포인터입니다.
메모리 위치
메모리에서는 배열의 첫 번째 요소와 배열의 시작 부분이 동일한 위치를 차지합니다. 이것이 t, &t[0], &t가 모두 동일한 값을 갖는 이유입니다.
결론적으로 t와 관련된 표현식은 배열에서 포인터로 변환하는 것과 다음을 사용하여 명시적으로 배열 주소를 가져오는 것의 차이를 보여줍니다. & 연산자. C에서 배열과 포인터를 효과적으로 사용하려면 이러한 차이점을 이해하는 것이 중요합니다.
위 내용은 배열에서 포인터로의 변환과 연산자 주소(&)가 C의 배열 주소에 어떤 영향을 미칩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!