본문 바로가기

C_C++

2차원 배열 이름의 포인터 타입 2

#include <stdio.h>

int main(void)
{
int arr1[3][2];
int arr2[2][3];

printf("arr1   : %d \n", arr1);
printf("arr1+1 : %d \n", arr1+1);
printf("arr1+2 : %d \n", arr1+2);


printf("arr2   : %d \n", arr2);
printf("arr2+1 : %d \n", arr2+1);
printf("arr2+2 : %d \n", arr2+2);

return 0;
}

결과


================================================================

#include <stdio.h>

void show_data(int (*ptr)[4], int a);

int main (void)
{
int arr1[2][4]={1, 2, 3, 4, 5, 6, 7, 8};  // arr1은 int타입의 4블록씩 증가
int arr2[3][4]={{1}, {2}, {3}};  // arr2은 int타입의 4블록씩 증가

show_data(arr1, 2);
show_data(arr2, 3);
return 0;
}

void show_data(int (*ptr)[4], int a)
// 이 코드에서 중요한건 int (*ptr)[4]
{
int i, j;

printf("----Start Print----\n");

for(i=0; i<a; i++)
{
for(j=0; j<4; j++)
printf("%d ", ptr[i][j]);
printf("\n");
}

}

결과