다중, 이중 포인터란? / 다중 포인터 사용하는 이유
■ 이중 포인터란?
포인터는 무엇인가요?
주소를 저장하는 변수입니다.
그럼 그 번수의 주소를 또 저장할 수 있을까요?
10이라는 데이터가 저장되어 있다고 합시다.
저장된 곳의 주소가 있겠지요. 그 주소가 또 다른 곳에 저장되어 있다면요?
다음과 같은 그림이 그려지겠네요.
주소를 저장한 변수의 주소는 어디에 저장할까요? 주소를 저장하니까 포인터네요.
그럼 그 포인터의 데이터형은 뭔가요? 그 역시 어떤 것의 주소이므로 포인터입니다.
이런 식으로 포인터 변수의 주소를 저장하는 변수를 이중 포인터라고 합니다.
int num = 10; // int형 변수 num 선언하고 10대입
int* p = # // int형 포인터 p선언하고 num 주소값 대입
int** pp = &p; // int형 포인터를 저장한는 포인터 pp선언하고 p의 주소값 대입 -> 이중포인터
이중포인터를 읽을 때는 오른쪽에서 왼쪽으로 읽으면 됩니다.
영어로 '포인터 투 포인터 투 인트' 입니다.
사물함 번호, 집 주소 - 메모리 주소
친구들 파티 - 실제 데이터
■ 다중 포인터란? 활용도는?
이중 포인터는 주소의 주소입니다.
그럼 주소의 주소의 주소도 가능할까요? 물론입니다.
이렇게 작성하면 됩니다.
int*** r = &q;
14중도 가능합니다.
int************** z = %y;
하지만 3중 포인터는 매~~~~우 가끔 쓰고, 4중 이상은 거의 안 쓰기 때문에 이중 포인터 개념을 제대로 익히면 됩니다.
이중 포인터는 어떻게 활용할 수 있을까요?
구구단, 2D 이미지 같은 2차원 자료를 처리할 때입니다.
2차원 배열은 이중 포인터와 비슷합니다.
메인 함수의 argv라는 매개변수가 있습니다. 이 변수도 알고 보면 이중포인터입니다.
int main(int argc, char* argv[]);
int main(int argc, char** argv);
3차원 공간을 다루는 곳에서는? 3차원 배열를 사용하겠지요. 따라서 삼중포인터도 가능합니다.
보충내용
화살표 그리는 방식으로 한면 적용해서 문제 풀어봐라
강의 230번 후반: 코드 보기_스왑 함수
강의 240: 코드 보기_단어 정렬
-----------------------------------
-----------------------------------
'컴퓨터 공학 > C, C++' 카테고리의 다른 글
C언어 문법 총정리_프로그래밍 독학이나 컴퓨터공학과를 준비하는 분을 위한 (426) | 2020.07.21 |
---|---|
[ C ] 포인터 이해하기11_포인터 개념 정리 / 용도 / 복습 또 복습하기 (404) | 2020.07.21 |
[ C ] 포인터 이해하기9_포인터 배열, 2차원 배열이란? 예제코드로 개념이해하기 (387) | 2020.07.20 |
[ C ] 포인터 이해하기8_함수 포인터 쉽게 읽는 방법 (1573) | 2020.07.20 |
[ C ] 포인터 이해하기7_함수 포인터란? 함수를 포인터에 저장할 수 있을까? (987) | 2020.07.20 |
댓글