강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

매참개님의 프로필 이미지
매참개

작성한 질문수

홍정모의 따라하며 배우는 C++

6.12 동적 할당 배열

포인터 주소 질문 드립니다.

작성

·

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]는 배열의 값을 의미하는 것입니다.

 

감사합니다.

매참개님의 프로필 이미지
매참개

작성한 질문수

질문하기