인프런 커뮤니티 질문&답변
포인터 주소 질문 드립니다.
작성
·
215
0
안녕하세요 강의 도중 질문이 있어서 문의 드립니다.
#include <iostream>
using namespace std;
int main()
{
int length;
cin >> length;
int* array = new int[length];
array[0] = 1;
array[1] = 2;
for (int i = 0; i < length; ++i)
{
cout << uintptr_t(&array[i]) << endl;
cout << array[i] << endl;
}
delete [] array;
return 0;
}
위 코드에서 array[i]번째 주소를 출력할 때, array가 포인터기 때문에 &를 안붙여도 될 것 같아서 &를 안붙이고 출력해봤는데 array의 i번째 값이 출력되었습니다. 왜 선언할 때 array를 포인터로 선언했는데 array[i]는 배열에 할당된 값을 의미하나요?
답변 1
2
안녕하세요 :)
배열의 이름은 곧 포인터입니다.
정확히는 배열의 첫 번째 요소를 가리키는 포인터입니다.
위 코드에서는 아래와 같이 length 만큼의 array를 포인터로 선언했지만,
int* array = new int[length];
사실 이는 아래와 같이 선언한 것과 동일합니다.
int array[length];
즉, array[i] 는
포인터로 선언한 int 배열 array의 i 번째 떨어진 값과 같기 때문에,
&를 붙이지 않으면 array[i]는 배열의 값을 의미하는 것입니다.
감사합니다.





