프로그램

// Dev-C++ 4.9.9.2 C++ 콘솔프로젝트로 구성함

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int *ptr, **ptr1, ***ptr2, ****ptr3;
int x=123;

printf("x : %d\n", x); // 초기화 123으로 x값을 초기화
printf("변수 x가 위치한 주소번지를 포인터변수 ptr로 선언\n");

printf("==========================================\n");

ptr = &x;
ptr1=&ptr;
ptr2=&ptr1;
ptr3=&ptr2;

printf("ptr 주소번지 : %x  \n", ptr);         
// ptr의 주소번지을 출력 : 22ff34

printf("ptr 주소번지에 저장된 값 : %d \n", *ptr);      
 // *ptr은 ptr의 주소번지의 값을 출력 : 123

printf("===================================================\n");

printf("ptr1 주소번지 : %x \n", ptr1);       
// ptr1의 주소번지를 출력 : 22ff44

printf("ptr1 주소번지에 저장된 값(ptr1=&ptr;) *ptr1 : %x\n", *ptr1);    
// *ptr1은 ptr1의 주소번지의 값을 출력 : 22ff34

printf("*ptr1 주소번지에 저장된 값 **ptr1 : %d \n", **ptr1); 
// **ptr1은 *ptr(22ff34)의 주소번지의 값을 출력 : 123

printf("===================================================\n");

printf("ptr2 주소번지 : %x\n", ptr2);         
//  ptr2의 주소번지를 출력 : 22ff40

printf("ptr2 주소번지에 저장된 값 *ptr2(ptr2=&ptr1;) : %x\n", *ptr2);    
// *ptr2는 ptr2의 주소번지의 값을 출력 : 22ff44

printf("*ptr2 주소번지에 저장된 값 **ptr2 : %x\n", **ptr2);  
// **ptr2는 *ptr(22ff44)의 주소번지의 값을 출력 : 22ff34

printf("**ptr2 주소번지에 저장된 값 ***ptr2 : %d\n", ***ptr2);
// ***ptr2는 **ptr2(22ff34)의 주소번지의 값을 출력 : 123

printf("===================================================\n");

printf("ptr3 주소번지 : %x\n", ptr3);         
// ptr3의 주소번지를 출력 : 22ff3c

printf("prr3 주소번지에 저장된 값 *ptr3(ptr3=&ptr2;) : %x\n", *ptr3);    
// *ptr3는 ptr3의 주소번지의 값을 출력 : 22ff40

printf("*ptr3 주소번지에 저장된 값 **ptr3 : %x\n", **ptr3);  
// **ptr3는 *ptr2(22ff40)의 주소번지의 값을 출력 : 22ff44

printf("**ptr3 주소번지에 저장된 값 ***ptr3 : %x\n", ***ptr3);
// ***ptr3는 **ptr3(22ff44)의 주소번지의 값을 출력 : 22ff34

printf("***ptr3 주소번지에 저장된 값 ****ptr3 : %d\n", ****ptr3);
// ****ptr3는 ***ptr3(22ff34)의 주소번지의 값을 출력 : 123

printf("===================================================\n");

****ptr3 = 100;  // 포인터를 이용하여 x 값을 변경함(Call by Reference)
printf("x : %d\n", x); // 실제 값이 변경되어 x가 123이 100으로 바뀜
       
    system("PAUSE");
    return EXIT_SUCCESS;
}



저는 이렇게 이해하고 있습니다. 혹시 틀린점이 있으면 알려주세요.

 

Posted by 탐색시간