이차원 배열은 실제로는 일차원 배열이 들어 있는 일차원배열입니다. 그렇게 사용하면 존재하지 않는 값을 불러오려고 하여 런타임에러가 발생합니다
접근하는 방법은
1. n을 전역변수로 만들어두고 neighbor를 int array[][n] 로 선언하는 방법
1-1. n을 전역변수로 만들어두고 neighbor를 int (*array)[n]로 선언하는 방법
2. neighbor에 &arr로 전달하고 array[i][j]를 *(array+i*m+j)로 계산하는 방법
3. 이차원 배열 선언 할 때 int** array 로 선언하고 neighbor에도 int **array로 전달하는 방법
4. 전역변수로 array[1000][1000] 선언해버리고 m, n까지만 계산하는 방법 (main 함수 밖에 선언하는 것)
#include<stdio.h>
void print_array(int m,int n,int* array){
for (int i=1;i<=m;i++){
for (int j=1;j<=n;j++){
printf("%d ",*(array+i*m+j));
}
printf("\n");
}
}
int main(){
int n,m,g;
scanf("%d %d %d",&n,&m,&g);
int arr[m+1][n+1];
int i,j;
for (i=1;i<=m;i++){
for (j=1;j<=n;j++){
scanf("%d",&arr[i][j]);
}
}
print_array(m,n,&arr);
}