배열의 포인터

Dohun Lee·2025년 7월 17일

C/C++

목록 보기
3/34
post-thumbnail

배열과 포인터

배열과 포인터의 관계는 c/c++ 에서 매우 밀접한 관계를 지닌다. 하지만 이 둘을 선언할때 종종 혼동을 겪는 경우가 있다. 주로 다음과 같은 경우이다.

배열을 가르키는 포인터를 생성해야 한다. TYPE array[size] 혹은 TYPE (array)[size] 둘 중에 무엇이 맞는 선언 방법인가?

포인터의 배열

두 선언 방법은 매우 비슷해 보여도 다른 의미를 지닌다. 먼저 TYPE* array[size]의 의미는 아래와 같다.

포인터 변수들을 담은 배열

즉, 배열을 가르키는 포인터가 아니라, 포인터 변수라는 요소들을 담은 배열을 선언하는 것이다. 즉, 이 선언 방법은 배열을 가르키는 포인터를 선언 하기 위한 방법이 아니다.

배열의 포인터

TYPE (*array)[size]의 의미는 아래와 같다.

size만큼의 크기를 지닌 배열을 가르키는 포인터

위 선언은 포인터가 가르키는 배열이 [size] 만큼의 크기를 가진다는 것을 명시하여 배열 자체를 가르키는 포인터를 선언하고 있는것이다. 즉, 이 변수는 size만큼의 요소를 가진 배열 덩어리를 가르키는 포인터 변수인 것이다.

이러한 배열의 포인터 변수를 사용하는 경우는 주로 다차원 배열을 함수 인자로 전달하거나, 반환할 때 사용된다.

profile
미국 공대생

0개의 댓글