Ex31-1차원 포인터 변수 p는 2차원배열 array[2][3]을 1차원으로만 접근 가능

CODEDRAGON Development/C, C++

반응형

   

1차원 포인터 변수 p는 2차원배열 array[2][3]을 1차원으로만 접근 가능합니다.

-> p[0], p[1], p[2], p[3], p[4], p[5]

   

   

소스코드

   

#include <stdio.h>

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

                // 1
차원 포인터 변수에 2차원 배열의 시작 주소 저장
                p=array;        // p=&array[0][0];  // p=array[0];
포인터 변수에 배열의 시작 주소를 저장

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

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


                //
정상출력(1차원으로 접근하여 출력)
//              printf("%d %d %d \n", p[0], p[1], p[2]);
//              printf("%d %d %d \n",  p[3], p[4], p[5]);

                return 0;
}

https://github.com/10zeroone/study_c/blob/master/ch07-pointer/src/Ex31.c

 

   

출력결과

int* p=NULL;

   

   

   

   

2차원 포인터변수 p는 1차원 포인터의 주소만 저장할 수 있어서 에러가 발생합니다.

   

   

소스코드

#include <stdio.h>

int main(void) {
                int array[2][3]={10,20,30,40,50,60};
                // 2
차원 포이터 변수
                int** p=NULL;   //int* p=NULL;

                // 2
차원 포인터 변수에 2차원 배열의 시작 주소 저장
                p=array;


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

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


                //
정상출력 (1차원 포인터변수 주소를 이용하여 출력)
//              printf("%d %d %d \n", *p, *(p+1), *(p+2));
//              printf("%d %d %d \n", *(p+3), *(p+4), *(p+5));

                return 0;
}


 

 

출력결과

int** p=NULL;

반응형