크기 [4][4] 인 2차 배열을 만들고, 시계방향으로 돌리는 프로그램입니다
빨간색으로 표시한 turn 부분처럼 함수형을 int (*turn)[4]로 선언할 수만 있다면
이차배열을 반환해서 바로 show(turn)으로 나타낼 수 있을 것 같은데,
함수형 선언부분에서 오류가 나네요..
함수형을 이차배열을 반환받을 수 있는 형태로 선언할 수는 없나요??질문 내용 :
#include stdio.h
int show(int (*arr)[4]){
int i=0;
int j=0;
for(i=0;i4;i++){
for(j=0;j4;j++){
printf(%3d , arr[i][j]);}
printf(\n);
}
return 0;
}int (*turn)[4] (int (*arr)[4]){
int i=0;
int j=0;
int (*temp)[4]=arr;
for(i=0;i4;i++){
for(j=0;j4;j++){
temp[j][5-i] = arr[i][j];}}
return temp;
}
int main(void){
int arr[4][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
};
int i=0;
int j=0;
show(arr);
turn(arr);
show(turn);
return 0;
}
스킬 2026.08.02
i가 0일때 5-i는 5가 되고 배열의 범위를 벗어나네요.
단순드립 2026.08.02
읽기 불편하시면,
typedef int int4[4];
int4 *turn(int4 *arr)
{
int i=0;
int j=0;
int4 *temp = arr;
for(i=0;i4;i++)
{
for(j=0;j4;j++){
&
별햇님 2026.08.02
아 된거같다 잠시만요 ㅋㅋ
푸른잎 2026.08.02
아.. 감사합니다
그런데 이렇게 바꾸고 나니까 이리저리 해봐도 turn을 printf시키는데 오류가 나네요..
어떻게 출력해야하는건가요 ㅠㅠ
LimeTree 2026.08.02
2차원 배열을 인수로 받고, 2차원 배열을 리턴하는 함수를 만들고 싶다면...
int (*turn(int (*arr)[4])) [4]
{
arr[i][j]...
return arr; // 2차원 배열을 가리키는 포인터 리턴
}
물티슈 2026.08.02
나선형 배열을 생각해보세요
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7