예시)
#include <stdio.h>
#include <stdlib.h>
void My_Func1(int *p)
{
int val = 100;
int *Ptr = &val;
p = Ptr; //실제로 이렇게 사용하진 않는다. 예시 일뿐.
}
void My_Func2(int *p)
{
int val = 100;
p = &val; //실제로 이렇게 사용하진 않는다. 예시 일뿐.
}
void My_Func3(int *p)
{
*p = 100; //포인터가 가리키는 값을 변경한다(화살표는 그대로)
}
void My_Func4(int **p)
{
int val = 200;
*p = &val; //포인터 화살표가 변경된다
}
void My_Func5(int **p)
{
int val2 = 300;
int *Ptr = &val2;
*p = Ptr; //포인터 화살표가 변경된다
}
int main()
{
int a = 5;
int *p = &a;
My_Func1(p);
printf("The val of *p is %d\n",*p);
My_Func2(p);
printf("The val of *p is %d\n", *p);
My_Func3(p);
printf("The val of *p is %d\n", *p);
My_Func4(&p);
printf("The val of *p is %d\n", *p);
My_Func5(&p);
printf("The val of *p is %d\n", *p);
}
더보기
출력)
The val of *p is 5
The val of *p is 5
The val of *p is 100
The val of *p is 200
The val of *p is 300
결론)
- *포인터를 인자로 넘기면 포인터가 가리키는 변수 값을 변경할 수 있고
- **포인터를 인자로 넘기면 포인터의 화살표를 변경할 수 있다.
반응형
'프로그래밍 언어 > C, C++' 카테고리의 다른 글
Unit testing 이란 (0) | 2022.02.13 |
---|---|
void 포인터 용법 정리 (0) | 2021.08.26 |
서식 지정자 및 출력 포맷 (0) | 2021.02.04 |
Trouble Shooting (0) | 2021.01.28 |
sprintf, vprintf, svprintf 사용법 (0) | 2021.01.25 |