Ex24-포인터 연산을 이용하여 배열에 접근하기

CODEDRAGON Development/C, C++

반응형

   

포인터 연산을 이용하여 배열에 접근하기

   

   

메모리 구조도

p=array;

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

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

  

   

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=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)

        p=array+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)

        p=array+2;              // 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)

        return 0;
}


 

   

출력결과