본문 바로가기
프로그래밍 언어/C언어

[C언어 #6] 다차원 포인터 (2차원)

by 디버그러 2024. 12. 5.

다차원 포인터는 메모리 주소를 여러 단계로 간접 참조하는 포인터로, 포인터의 개념을 한 단계 더 확장한 것입니다.

 

 

 


 

 

 

1. 다차원 포인터 개념

 

포인터는 메모리 주소를 저장하는 변수입니다.

다차원 포인터는 이러한 포인터를 가리키는 포인터를 의미합니다.

예를 들면 일반 포인터는 메모리 주소를 가리키지만, 다차원 포인터는 다른 포인터의 주소를 가리킵니다.

 

차원은 포인터가 참조하는 단계에 따라 증가합니다.

  • 일반 포인터: *ptr
  • 2차원 포인터: **ptr

 

 

 

2. 다차원 포인터 선언
(자료형)**(변수 이름);

 

다차원 포인터 중 가장 자주 사용하는 2차원 포인터 예시입니다.

 

다차원 포인터는 자료형 앞에 차원의 개수만큼 *을 붙여 선언합니다.

*의 개수가 많아도, 다차원 포인터 역시 메모리 주소를 저장하는 변수이므로 일반 포인터와 동일하게 4Byte 크기를 가집니다. (32비트 시스템 기준)

 

 

 

3. 다차원 포인터 정의
(다차원 포인터 이름) = &(가리킬 포인터);

 

2차원 포인터는 1차원 포인터의 주소를 저장하는 방식으로 정의됩니다.

다차원 포인터는 한 차원 낮은 포인터의 주소를 저장하는 것이 일반적입니다.

 

 

 

4. 다차원 포인터 동적 할당

 

1차원 포인터와 마찬가지로, 다차원 포인터 역시 동적 할당을 통해 메모리를 관리할 수 있습니다.

malloc 함수는 동적으로 메모리를 할당하며, 크기를 명시할 때는 sizeof 함수를 사용하는 것이 코드의 안정성을 높이는 데 도움 됩니다.

 

 

다차원 포인터는 여러 개의 메모리를 동적으로 할당해 활용할 수도 있습니다.

위 코드는 총 12바이트(3 x 4)를 할당하며, 4바이트 크기의 메모리 공간 3개를 각각 data1, data2, data3의 주소를 저장하는 데 사용합니다.

 

위의 코드에서 괄호가 없는 경우 연산 우선순위가 달라져 문제가 발생합니다.