2차원 배열을 함수의 인자로 전달할때
너에게
질문 제목 : 2차원 배열을 함수의 인자로 전달할때질문 내용 : #include stdio.h
void a(int (*ptr1)[4])
{
int i;
int arr[4][4];
for(i=0;i4;i++)
{
arr[i][3]=ptr1[0][i];
arr[i][2]=ptr1[1][i];
arr[i][1]=ptr1[2][i];
arr[i][0]=ptr1[3][i];
}
ptr1=arr;
}
int main(void)
{
int i,g;
int arr1[4][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16,},
};
a(arr1);
for(i=0;i4;i++)
{
for(g=0;g4;g++)
printf(%d ,arr1[i][g]);
printf(\n);
}
}
4x4배열을 시계방향으로 90도 돌리는 함수를 만들었는데
위로 실행하면 변화없이 처음에 초기화한 값으로 나오더라고요.
문제가 함수내의 매개변수의 값의변경과 매개변수로 전달한 변수는 아무 상관없다 라는것 때문인건 인지하겠는데
이걸 어떻게 해결해야 될지를 모르겠어요.
매개변수를 int *(*ptr1)[4]로 하고 함수 호출을 a(&arr1)로 하면 문제가 해결될거라고 기대했는데
컴파일 에러만 나더라고요
-
앨버트
ptr1 = arr; // 이렇게 해선 주소에 저장된 내용이 복사되진 않습니다. 주소만 달랑 대입되죠.
대신,
memcpy(ptr1,arr,sizeof(int[4][4]));
을 써 보시죠.
#include \memory.h\
을 하시구요.