[C언어/C++] 이중 포인터 사용법 & 예제
- Language/C , C++ , C#
- 2021. 1. 31.
다중 포인터란 2차원 이상의 포인터 변수를 의미합니다. 포인터 변수도 메모리위에 올라가야하기에 주소값이 있습니다. 이러한 포인터의 메모리 주소값을 참조하는 포인터의 포인터를 이중 포인터라고 하며 이런 원리로 무한대의 다차원 포인터를 만들 수 있습니다. 다만 이중포인터까지만 종종 사용되고 실질적으로 2차원을 넘어서는 고차원 포인터는 잘 사용되지 않습니다.
이중포인터 사용법
int **ptr = NULL;
포인터를 선언할 때 ** 이런식으로 자료형 뒤에 *을 두 번 사용하면 포인터의 포인터(이중 포인터)를 선언할 수 있습니다.
이중 포인터 사용 예제
#include <stdio.h>
void main()
{
char ch = 'A';
char* ptr = NULL;
char** ptr2 = NULL;
ptr = &ch; // ptr->ch
ptr2 = &ptr; // ptr2 -> ptr
printf("ch : %c\n", ch); //ch 값 출력
printf("ptr : %p\n", ptr); //ptr 값 출력
printf("ptr2 : %p\n\n", ptr2); //ptr2 값 출력
printf("ch 주소: %p\n", &ch); //ch 주소 출력
printf("ptr 주소: %p\n", &ptr); //ptr 주소 출력
printf("ptr2 주소: %p\n\n", &ptr2); //ptr2 주소 출력
printf("ch 참조값: %c\n", ch); //ch 값 출력
printf("ptr 참조값: %c\n", *ptr); //ptr 참조 값 출력
printf("ptr2 참조값: %p\n", *ptr2); //ptr2 참조 값 출력
printf("ptr2 이중 참조값: %c\n", **ptr2); //ptr2 이중 참조 값 출력
}
위의 예제에서 확인하실 수 있듯 char변수 ch의 주소값을 포인터 변수 ptr이 참조하고 있고 이 ptr 포인터 변수의 주소값을 또다시 이중 포인터 ptr2가 참조하고 있습니다. 이중 포인터에서 이를 역참조하면 char변수 ch까지 접근이 가능합니다.
'Language > C , C++ , C#' 카테고리의 다른 글
[C언어/C++] 상수 선언하기 const, define의 차이점 (0) | 2021.02.01 |
---|---|
[C언어/C++] const 포인터와 키워드 위치에 따른 차이점 (0) | 2021.02.01 |
[C언어/C++] 포인터 배열, 배열 포인터의 사용법과 차이점 (3) | 2021.01.30 |
[C언어/C++] 비트 쪼개기 (Bit Split) 사용법 & 예제 (비트연산 활용) (2) | 2021.01.29 |