함수형을 이차배열을 반환받을 수 있는 형태로 선언할 수는 없나요??
든해솔
크기 [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;
}
-
뱐헀어
i가 0일때 5-i는 5가 되고 배열의 범위를 벗어나네요.
-
보물선
읽기 불편하시면,
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++){
& -
든해솔
아 된거같다 잠시만요 ㅋㅋ
-
꽃여름
아.. 감사합니다
그런데 이렇게 바꾸고 나니까 이리저리 해봐도 turn을 printf시키는데 오류가 나네요..
어떻게 출력해야하는건가요 ㅠㅠ -
노랑이
2차원 배열을 인수로 받고, 2차원 배열을 리턴하는 함수를 만들고 싶다면...
int (*turn(int (*arr)[4])) [4]
{
arr[i][j]...
return arr; // 2차원 배열을 가리키는 포인터 리턴
} -
한봄찬
나선형 배열을 생각해보세요
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7