본문 바로가기
C언어

세이버의 C언어 강의 26강_ 포인터란 무엇인가_Part2(다차원 포인터)

by 비원(Be one) 2019. 7. 29.
반응형

여러분 안녕하세요. 세이버입니다.

 

저번 강에서는 포인터에 대해 설명드렸습니다.

배열에도 차원이 존재하듯 포인터에도 차원이 존재하는데요. 그래서 이번 강에서는 다차원 포인터에 대해 알아보겠습니다.


1. 다차원 포인터란 무엇인가

저번 강에서 설명드린 포인터가 1차원 포인터라면 2차원 포인터는 1차원 포인터의 주소를 저장하는 변수라고 할 수 있습니다.

예를 들어 변수 a의 주소를 가진 포인터 변수 p1의 주소를 p2가 가지고 있으면, p2는 2차원 포인터인 것입니다.

 

이 말이 조금 헷갈리시는 분들은 포인터에 대한 개념을 완벽히 숙지하시고 오시면 더 쉽게 이해되실 겁니다.

 

 

2. 다차원 포인터의 선언

다차원 포인터의 선언은 1차원 포인터의 선언과 비슷합니다.


1차원 포인터 선언법


1차원 포인터의 선언법이 위와 같다고 저번 강에서 설명드렸습니다.

다차원 포인터도 이와 비슷합니다.


다차원 포인터 선언법

2차원 포인터 선언

 


이렇게 *를 하나 더 붙이면 됩니다.

 

허무....

 

3차원 포인터는 *를 세 개 붙이면 됩니다. 즉, *의 개수로 포인터의 차원을 알 수 있습니다.

 

3. 다차원 포인터 사용법

다차원 포인터 사용법 역시 1차원 포인터와 유사합니다.


다차원 포인터에 주소 넣기

2차원 포인터에 주소 넣기


이렇게 2차원 포인터에 1차원 포인터의 주소를 넣으면 됩니다. 

 

허무2

 

4. 다차원 포인터로 변수값에 접근하기

1차원 포인터에서 변수의 값에 접근하기 위해서는 * 연산자를 사용했습니다.

그러면 다차원 포인터에서는 어떻게 접근을 할까요??

 

2차원 포인터의 변수 접근

이렇게 1차원 포인터와 2차원 포인터는 꼬리를 무는 관계이므로, *를 하나 더 붙인 **p2를 사용하면 변수 num에 접근할 수 있습니다.

**p2 -> *(*p2) -> *p1 -> num

이런 공식입니다.

 

다차원 포인터 역시 1차원 포인터와 같이 변수에 간접 접근하여 값을 바꿀 수 있습니다.


이번 강의는 여기까지입니다.

 

오늘도 수고하셨습니다.

 


정리

- 다차원 포인터 : 포인터의 주소를 저장하는 포인터, *의 개수로 차원이 결정된다.

- 다차원 포인터 선언법 : int** p=NULL;와 같이, *(차원의 수만큼)과 NULL를 대입한다.

- 다차원 포인터 사용법 : 포인터의 주소를 &연산자를 이용해 대입한다. 


강의가 유익하셨거나 마음에 드셨으면 구독과 좋아요, 댓글 부탁드립니다.

궁금하신 점이나 질문은 댓글이나 메일 남겨주세요.

 

poci5003@gmail.com

 

반응형