프로그래밍 언어/C, C++

Two pointer as argument

EastHoon 2021. 8. 2. 11:08

예시)

#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

 

 

결론)

- *포인터를 인자로 넘기면 포인터가 가리키는 변수 값을 변경할 수 있고

- **포인터를 인자로 넘기면 포인터의 화살표를 변경할 수 있다.

반응형