반응형

포인터에 관한해서.

https://ansan-survivor.tistory.com/1237

 

[C언어] 포인터란? 포인터에 대해 쉽게 이해하기. (포인터 변수 사용하기, 포인터로 값 변경하기,

(알아두기) 컴퓨터는 32비트와 64비트를 많이 사용한다. 이는 1번 처리에 사용할 수 있는 메모리의 크기이다. 만약 32비트(4byte) PC라면, 8 byte를 할당해도 저장할 수 있는 공간은 4byte 뿐이다. 나머지

ansan-survivor.tistory.com

 

더블포인터에 관해서.

https://ansan-survivor.tistory.com/1288

 

[C언어] 포인터의 포인터 (더블 포인터, 이중 포인터, 삼중 포인터) 이해하기 예제

앞서 간단하게 포인터란 무엇인지, 예제를 통해 설명. https://ansan-survivor.tistory.com/1237 [C언어] 포인터란? 포인터에 대해 쉽게 이해하기. (포인터 변수 사용하기, 포인터로 값 변경하기, (알아두기)

ansan-survivor.tistory.com

 

더블포인터의 swap 예제.

#include <stdio.h>

/*
	더블포인터 **ptr
	더블 포인터를 이용해 
	swapIntptr 함수 만들기.
	num1 -> num2 값으로,
	num2 -> num1 값으로,
*/

//	주소값의 인자를 받기 위해
//  (*p1)의 자료형 int*, ptr1에 저장하기 위해서는 자료형이 같아야 한다.
void SwapIntPtr(int* * p1, int* * p2)							
{
	int * temp = *p1;	//	*p1 = ptr1 을 의미, ptr1의 주소를 temp에 저장.
	*p1 = *p2;			//	ptr2의 주소를 ptr1에 저장.
	*p2 = temp;			//	*p2 = ptr2 이고, ptr2의 자료형은 (int *) 이므로 temp의 자료형과 같아서 대입 가능.
}

int main()
{
	int num1 = 10, num2 = 20;		
	int * ptr1 = NULL;
	int * ptr2 = NULL;	//	포인터 초기화
	
	ptr1 = &num1, ptr2 = &num2;

	SwapIntPtr(&ptr1, &ptr2);	//	함수를 통해 값을 변경하려면, 그 주소값을 인자로 전달해야함.

	/*
		즉, p1 -> ptr1 -> num1 을 가리키고,
			p2 -> ptr2 -> num2 를 가리킴.
	*/


	printf("num1: %d\n num2: %d \n", *ptr1, *ptr2);

	return 0;
}
반응형

(결과)

 

 

반응형

+ Recent posts