정적 2차월 배열 주소를 리턴할때 리턴타입은?

vananamilk의 이미지

안녕하세요^^

char p[2][2];

??? func()
{
    return p;
}

int main()
{
   char (*T)[3] = func();
   
   return 0;
}

typedef char (*P)[3];
P를 리턴타입으로 하니까 아무 경고 없이 되는뎅~
char (*)[3] 식으로 리턴타입 적으니까 문법에러네요.

flyingykk의 이미지

char p[2][3];

char (*func())[3]
{
    return p;
}

라고 하셔야할 듯...
익명 사용자의 이미지

ykk wrote:
char p[2][3];

char (*func())[3]
{
    return p;
}

라고 하셔야할 듯...

타입이 맞지 않는다는 Warning가 뜨네요. 전 -Wall 옵션을
줬을때 Warning이 없게 만들게 싶어서요~ typedef 방법은
Warning이 없습니다^

vananamilk의 이미지

위에 잘못 적었네요^ login 안하구 적어서 수정두 안 되네요^
ykk님 답변 감사드립니다^

xster의 이미지

char (*func(void))[3] 이렇게 되어 있으면
func 를 기준으로 읽어 주시면 됩니다.

func은

  1. 함수다 (void)
  2. 인자는 받지 않는다.
  3. 리턴 타입은 다음과 같다.
    1. 포인터를 리턴한다. (*)
    2. 3개의 요소를 가지는 배열의 포인터를 리턴한다. (*)[3]
    3. char형 3개의 요소를 가지는 배열의 포인터를 리턴한다. char (*)[3]

원하는 정의를 말로 풀이 하신 후 우선 순위에 따라 적어주게 되면 선언문이 완성이 됩니다.

func은 3개의 요소를 가지는 char형 배열의 포인터를 리턴하는
(함수는 배열을 리턴할 수 없으니 대신 포인터를 리턴합니다.) 인자를 받지 않는 함수다.

[/][/]