c언어 포인터의 포인터
-
게시물 수정 , 삭제는 로그인 필요
#include <stdio.h>
int main(void)
{
int num = 100; // 변수 선언
int* ptr_num = # // 포인터 선언
int** pptr_num = &ptr_num; // 포인터의 포인터 선언
printf("변수 num가 저장하고 있는 값은 %d입니다.\n", num);
printf("싱글 포인터 ptr_num가 가리키는 주소에 저장된 값은 %d입니다.\n", *ptr_num);
printf("더블 포인터 pptr_num가 가리키는 주소에 저장된 포인터가 가리키는 주소에 저장된 값은 %d입니다.\n", **pptr_num);
return 0;
}
실행해본결과
변수 num가 저장하고 있는 값은 10입니다.
싱글 포인터 ptr_num가 가리키는 주소에 저장된 값은 10입니다.
더블 포인터 pptr_num가 가리키는 주소에 저장된 포인터가 가리키는 주소에 저장된 값은 10입니다.
포인터의 포인터?라는 것에대해 공부중인데요
![](https://img-api.cboard.net/img_n.php?image_url=https://kin-phinf.pstatic.net/20240101_31/1704118035838qAYGW_PNG/%BD%BA%C5%A9%B8%B0%BC%A6%2C_2024-01-01_23-06-08.png)
오른쪽 그림처럼 이렇게 된다고 합니다.
그런데 코딩에서 다른것은 이해되는데
printf("더블 포인터 pptr_num가 가리키는 주소에 저장된 포인터가 가리키는 주소에 저장된 값은 %d입니다.\n", **pptr_num);
여기서 **pptr_num가 가리키는 것은 ptr의 값 0*12가 나와야하는거 아닌가요?
그리고
int main(void)
{
int num = 100; // 변수 선언
int* ptr_num = # // 포인터 선언
int* pptr_num = &*ptr_num; // 포인터의 포인터 선언
printf("변수 num가 저장하고 있는 값은 %d입니다.\n", num);
printf("싱글 포인터 ptr_num가 가리키는 주소에 저장된 값은 %d입니다.\n", *ptr_num);
printf("더블 포인터 pptr_num가 가리키는 주소에 저장된 포인터가 가리키는 주소에 저장된 값은 %d입니다.\n", *pptr_num);
return 0;
}
이렇게 빨간부분으로 바꿔써도 이중포인터 대신 써도 되는건가요? 쓰이는 알고리즘이 비슷해보여서 질문드립니다.
![](https://img-api.cboard.net/img_n.php?image_url=https://kin-phinf.pstatic.net/20240101_31/1704118035838qAYGW_PNG/%BD%BA%C5%A9%B8%B0%BC%A6%2C_2024-01-01_23-06-08.png)
#c언어 포인터의 포인터 #c언어 포인터의 장단점