728x90
이중 포인터
포인터는 다른 변수의 주소를 가르킨다고 학습했었다.
포인터도 변수이기 때문에, 포인터가 포인터를 가르킬 수 있다.
그것을, 포인터의 포인터. 즉, '이중 포인터'라고 한다.
간단한 일반적인 포인터의 예를 보자,
int i = 10;
int *p = &i;
이것은 지금까지 학습했던, 일반적인 포인터이다.
포인터 p는 변수 i를 가르키게 된다.
이중 포인터는 이렇게 표현한다.
int i = 10;
int *p = &i;
int **q = &p;
포인터 p는 변수 i의 주소를 가르키고,
이중포인터 q는 포인터p의 주소를 가르킨다.(포인터 p도 변수이기 때문에 주소를 갖는다.)
텍스트로는 이해가 힘드니 그림으로 다시 알아보자.
참조연산자 *
주소연산자 &
를 활용해서 누가 어떤 값을 갖는지 확인해보자.
p = &i // p는 i의 주소를 갖는다.(1000)
*p = 10 // p가 가르키는 것의 값, 즉 i의 값 10이다.
q = 996 // p의 주소
*q = 1000 // q가 가르키는 것의 값. 즉, q가 가르키는 것은 p이고 p는 i의 주소를 갖고 있다!(1000)
**q = 10 // q가 가르키는 것의 가르키는 것의 값. 즉, q는 p를 가르키고 p는 i의 주소를 가르키는데, 그 i의 값!
728x90
'C프로그래밍 > 개인 공부' 카테고리의 다른 글
C언어 - 함수의 포인터 (0) | 2023.01.07 |
---|---|
C언어 - 포인터의 배열, 배열의 포인터 (0) | 2023.01.05 |
C언어 - 연결리스트 (0) | 2022.12.20 |
C언어 - 동적 메모리 (0) | 2022.12.14 |
C언어 - 열거형(enumeration) (0) | 2022.12.11 |