본문 바로가기

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

Two pointer as argument

예시)

#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