IT/솔루션) 난 정말C... 없다구요

23장. 포인터의 포인터, 포인터배열) 문제 23-2 [이중 포인터를 이용한 포인터 관계 변경하기]

돔찌 2019. 4. 18. 18:10

<2016. 9. 26. 21:09>

 

23장. 포인터의 포인터, 포인터배열) 문제 23-2 [이중 포인터를 이용한 포인터 관계 변경하기]

 

/*
먼저 예시를 하나 제시.
int main(void) {
	int n1 = 100;
	int n2 = 200;
	int * ptr1 = &n1;
	int * ptr2 = &n2;
	int ** dptr = &ptr1;
	printf(" *ptr1 = %d \n", *ptr1);
	printf(" *ptr2 = %d \n", *ptr2);
	printf(" **ptr = %d \n", **dptr);
	system("pause");
	return 0;
}
위 예제의 결과는 다음과 같다.
 *ptr1 = 100
 *ptr2 = 200
 **dptr = 100
 ===========================
 코드를 삭제/변경 없이 추가만 하여
 n1 - ptr1 - dptr
 n2 - ptr2
 의 관계에서
 n1 - ptr2 - dptr
 n2 - ptr1
 의 관계로 바뀌게끔 만들어라
*/
#include<stdio.h>
#include<stdlib.h>
int main(void) {
	int n1 = 100;
	int n2 = 200;
	int * ptr1 = &n1;
	int * ptr2 = &n2;
	int * middle = NULL;
	//추가된 코드
	int ** dptr = &ptr1;
	printf(" *ptr1 = %d \n", *ptr1);
	printf(" *ptr2 = %d \n", *ptr2);
	printf(" **ptr = %d \n", **dptr);
	//아래는 추가된 코드
	middle = ptr1;
	ptr1 = ptr2;
	ptr2 = middle;
	dptr = &ptr2;
	printf("======변경========\n");
	printf(" *ptr1 = %d \n", *ptr1);
	printf(" *ptr2 = %d \n", *ptr2);
	printf(" **ptr = %d \n", **dptr);
	system("pause");
	return 0;
}