Ex25-포인터 변수 p에 저장되는 배열의 주소가 다양하게 표현될 수 있는 것 확인하기

CODEDRAGON Development/C, C++

반응형

   

포인터 변수 p에 저장되는 배열의 주소가 다양하게 표현될 수 있는 것 확인하기

   

   

   

메모리 구조도

p=array;                // p=&array[0];

printf("%d %d %d \n", p[0], p[1], p[2]);

printf("%d %d %d \n", *p, *(p+1), *(p+2));

  

   

p=p+1;                        // p=&array[1];

printf("%d %d %d \n", p[-1], p[0], p[1]);

printf("%d %d %d \n", *(p-1), *p, *(p+1));

  

   

p=p+1;                        // p=&array[2];

printf("%d %d %d \n", p[-2], p[-1], p[0]);

printf("%d %d %d \n", *(p-2), *(p-1), *p);

  

   

   

소스코드

   

#include <stdio.h>

int main(void) {
                int array[3]={10, 20, 30};
                int* p=NULL;

                p=array;                // p=&array[0];
                printf("%d %d %d \n", p[0], p[1], p[2]);
                printf("%d %d %d \n", *p, *(p+1), *(p+2));      // *p == *(p+0)
                printf("----------\n");

                p=p+1;                  // p=&array[1];
                printf("%d %d %d \n", p[-1], p[0], p[1]);
                printf("%d %d %d \n", *(p-1), *p, *(p+1));      // *p == *(p+0)
                printf("----------\n");

                p=p+1;                  // p=&array[2];
                printf("%d %d %d \n", p[-2], p[-1], p[0]);
                printf("%d %d %d \n", *(p-2), *(p-1), *p);      // *p == *(p+0)
                printf("----------\n");

                return 0;
}


   

   

출력결과