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;
}