본문으로 바로가기
728x90
반응형

C언어에서 한번의 고비가 바로 포인터입니다.


입사 초기에 제일 힘든 부분이 바로 포인터 였습니다.


지금은 나름 자신있게(?) 쓰고 있습니다.


그러면 오늘은 포인터 배열과 배열 포인터의 차이를 알아 보겠습니다.


 

 

 



먼저 선언 하는 것을 보겠습니다.


int *array1[10];        // 포인터 배열(이중 포인터)

int (*array2)[10)];     // 배열 포인터


선언은 이렇게 차이가 있습니다.


포인터를 공부한지 얼마 안되신 분들은 생소하실 겁니다.


이 참에 기본적인 개념을 바로 잡아 가시기 바랍니다.


유일한 차이점은 괄호의 여부입니다.


array1은 포인터 배열입니다. 배열에 메모리 주소값을 저장할 수 있는 배열입니다. 즉, 주소값을 요소로 지니는 배열입니다.


아래와 같이 사용합니다.


int num1=10, num2=20, num3=30, num4=40;

int *array1[4] = {&num1, &num2, &num3, &num4};


printf("%d %d %d %d\n", *array[0], *array[1], *array[2], *array[3]);


 

 

 



array2는 int형 배열을 가리키는 포인터 변수입니다.


아래와 같이 쉽게 사용할 수 있습니다.


int array3[2][4] = {1,2,3,4,5,6,7,8};

int (*array2)[4] = array3;


for(i=0;i<2;i++) {

for(j=0;j<4;j++) {

printf("%d ", array2[i][j]);

}

}


 

 



예제를 보면 이해가 더욱 쉬울 겁니다.


이 참에 차이를 확실히 익혀두세요!



728x90
반응형