변수를 중심으로 해석(?) 해 줍니다.
x는 그냥 변수입니다.
오른쪽으로 읽어서 x는 배열입니다.
그런데 그 배열에 무엇이 들어있냐 주소가 들어있습니다.
즉 배열 각각의 원소 5개가 모두 주소입니다.
헌데 그 원소 5개는 각각 주소인데 바로 함수를 가르킵니다.
그 함수는 포인터를 리턴값으로 갖는 함수입니다.
그 리턴되는 포인터 주소는 역시 배열이며 그 배열은 캐릭터 형을
가르킵니다.
The C programming Language 의 123 페이지를 보면
해석하는 방볍이 나와있으니 참고하시기 바랍니다.
보아하니 함수 포인터인거 같은데...-_-ㅋ개인적으로 이런 복잡한거
보아하니 함수 포인터인거 같은데...-_-ㅋ
개인적으로 이런 복잡한거 별로 안좋앟는데...
이거 사용한 예제코드랑 같이 보면은 해석은 더 쉬울거 같네요.
그리고 제가 함수 포인터를 실제 코드에 사용해본적이 없어서 더더 난해하게 보이네요..-_-ㅋ
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
[url]http://wiki.kldp.org/wiki.php/CLang
http://wiki.kldp.org/wiki.php/CLangaugeComplexDeclaration
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
Re: 복잡한 포인터 문제..어떻게 해결하죠...
배열의 포인터 char (*)[10]를 리턴하는 함수 포인터의 배열입니다.
위 typedef 된 func 의 5개짜리 배열이 x 입니다.
Orion Project : http://orionids.org
그런거 알 필요도 없을 걸요...
그런 포인터는 사용 되지도 않습니다.. 사용 한다면 사용 하는 사람이 이상 한 거겠죠...
-----------^^ ^^ ^^ ^^ ^^ ----------
..........................................................
Re: 그런거 알 필요도 없을 걸요...
일단, 함수 포인터의 배열은 많이 사용됩니다.
단지 저렇게 읽기 어렵게 사용은 잘 안하고 typedef 를 쓰죠.
그리고, 그 함수가 무엇을 리턴하느냐 문제인데,
저것보다 읽기 더 까다로운 건, 함수 포인터를 리턴하는 함수입니다.
대표적으로 signal 함수가 그렇죠.
아무튼 저렇게 사용한다고 해서 이상한 사람은 아닙니다. :)
Orion Project : http://orionids.org
일단 대충 해석했습니다.char (*(*x[5])())[10] ;
일단 대충 해석했습니다.
char (*(*x[5])())[10] ;
typedef char (* NEWTYPE )[10] //리턴형은 char 형배열[10]에대한 포인터.
NEWTYPE (*x[5])();
(리턴형이 char형배열[10]에대한 "포인터"인~~~~) 함수포인터 5개가 있는 배열.
맞는지 확인좀 해주세요. :cry:
K&R책에 나오는 예제입니다...char (* (*x()
K&R책에 나오는 예제입니다...
char (* (*x()) [])();
typedef char (* XXX [])()
리턴형은, char를 리턴하는 함수포인터의 배열
XXX (*x()) ===>
리턴형이 XXX에대한 포인터인 함수.
즉...!
char형을 리턴하는 함수포인터의 배열에대한! 포인터를 리턴하는 함수..
char * y() ; 가 char형 포인터를 리턴하는 함수인것처럼...!!~
이제야 조금 감이 잡히는군요.
위에분 말씀데로 typedef를 쓰니까 훨씬 편하네요..
아무튼 잘못된 부분 알려주세요. :D
http://www.eskimo.com/~scs/C-faq/q1.21.h
http://www.eskimo.com/~scs/C-faq/q1.21.html
도움되시길 바라겠습니다.
변수를 중심으로 해석(?) 해 줍니다.x는 그냥 변수입니다.오른쪽
변수를 중심으로 해석(?) 해 줍니다.
x는 그냥 변수입니다.
오른쪽으로 읽어서 x는 배열입니다.
그런데 그 배열에 무엇이 들어있냐 주소가 들어있습니다.
즉 배열 각각의 원소 5개가 모두 주소입니다.
헌데 그 원소 5개는 각각 주소인데 바로 함수를 가르킵니다.
그 함수는 포인터를 리턴값으로 갖는 함수입니다.
그 리턴되는 포인터 주소는 역시 배열이며 그 배열은 캐릭터 형을
가르킵니다.
The C programming Language 의 123 페이지를 보면
해석하는 방볍이 나와있으니 참고하시기 바랍니다.
오랜만에 보았더니 ㅡㅡㅋ
::::::::::: Easy come, Different go.
::::::::: Http://www.geekstep.org
답변감사해요.그런데...선언은 대충은 하겠는데..실제로 사용을 어떻게
답변감사해요.
그런데...선언은 대충은 하겠는데..실제로 사용을 어떻게 해야하는지 모르겠네요.
char (*(*x[5])())[10] ; 이렇게 선언한다음에 x[0] , x[1]에 원소를 넣고싶은데
그 원소가 되는것이 char형 배열을 리턴하는 함수의 포인터가 되어야하니....
이렇게 저렇게 해봤는데 안되네요..아래것도 안되고...
char[] * t1()
{
}
질문의 요지는 char형 배열에대한 포인터를 리턴하는 함수를 어떻게 정의하는지 입니다..
[quote="happyman"]질문의 요지는 char형 배열에대한
char* func( ... );
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
[quote="happyman"]답변감사해요.char (*(*x[5]
질문에 답이 있습니다. :)
Orion Project : http://orionids.org
댓글 달기