본문 바로가기

컴퓨터 과학 & 영상처리 관련/C / C++

2차원 배열을 포인터로 인자로 줄려면 어쩐다

그대로 갖다 쓰는게 어렵네...그냥 이정도 까지 테스트 했지만

2차원 배열의 크기가 다를때마다 똑같은 코드를 함수안에 넣기가 아까워서

2차원 배열을 인자로 줄 수 없나 생각을 해 봤는데 걍 여기까지 하고 포기

 

소스 

#include <stdio.h>


void print(int *a,int row,int column)
{
int i,j;
for(i=0;i<row;i++)
   for(j=0;j<column;j++)
      printf("a[%d][%d] = %d",i,j,a[i*column+j]);
}

void print1(int *a,int row, int column)
{
int i,j;
for(i=0;i<2*5;i++)
   printf("%d = %d",i,a[i]);
}

int main(void)
{
int a[4][3]={0,1,2,3,4,
5,6,7,8,9,10,11
};

print1((int*)a,4,3);
print((int*)a,4,3);
}

 

 

 

결과

0 = 0
1 = 1
2 = 2
3 = 3
4 = 4
5 = 5
6 = 6
7 = 7
8 = 8
9 = 9
a[0][0] = 0
a[0][1] = 1
a[0][2] = 2
a[1][0] = 3
a[1][1] = 4
a[1][2] = 5
a[2][0] = 6
a[2][1] = 7
a[2][2] = 8
a[3][0] = 9
a[3][1] = 10
a[3][2] = 11