함수형을 이차배열을 반환받을 수 있는 형태로 선언할 수는 없나요??

크기 [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;
}

댓글 6

  • 스킬 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

C언어 다른 글

목록