Ex-포인터 변수에 2차원 배열의 시작 주소 저장

CODEDRAGON Development/C, C++

반응형

 

 

   

포인터 변수에 2차원 배열의 시작 주소 저장   

   

   

 

 

 

오류메시지

p[0][0]표현은 존재하지 않습니다.

왜냐하면 p는 1차원 배열이므로 1차원 형태로만 접근하게 됩니다.

printf("%x\n", &p[0][0]);

   

   

 

 

소스코드

#include <stdio.h>

int main(void) {
        // 2
차원 배열
        int array[2][3]={10,20,30,40,50,60};
        // 1
차원 포인터변수
        int* p=NULL;
                                        //
포인터 변수에 배열의 시작 주소를 저장
        p=array;                // p=&array[0][0];  // p=array[0];      // p=*(array+0);
                                        // p[0][0]
표현은 존재하지 않음. 왜냐하면 p 1차원 배열이므로 1차원 형태로만 접근하게 됩니다.
        printf("------------\n");
        printf("%x %x %x \n", &p[0], &p[1], &p[2]);     // printf("%x %x %x \n", p+0, p+1, p+2);
        printf("%x %x %x \n", &p[3], &p[4], &p[5]);     // printf("%x %x %x \n", p+3, p+4, p+5);

//      printf("%x\n", &p[0][0]);       // ERROR: subscripted value is neither array nor pointer nor vector

        printf("------------\n");
        printf("%d %d %d \n", p[0], p[1], p[2]);        // printf("%d %d %d \n", *(p+0), *(p+1), *(p+2));
        printf("%d %d %d \n", p[3], p[4], p[5]);        // printf("%d %d %d \n", *(p+3), *(p+4), *(p+5));

        return 0;
}

 

 

 

   

출력결과