[완료]포인터형 선언시,
글쓴이: parrier / 작성시간: 월, 2008/09/01 - 3:00오후
포인터형 선언시 괄호의 차이에 따라서 다르다는 것은 이해했습니다. 즉,
int *mail();
의 경우는 int 포인터 형을 반환한다는 것이고,
int (*mail)();의 경우는
int 값을 반환하는 함수 포인터 mail을 선언하는 것이라는 것이지요. 맞나요?
그런데,
int *mail();과
int* main();은 어떤 차이가 있나요? 즉 astrix가 반환형에 붙어있을 때와 함수명에 붙어있을때(혹은 변수명에 붙어있을때)
차이가 무엇이 있을까요?
검색을 해보려고 해도 무엇을 가지고 검색을 해야할지 모르겠네여.
Forums:
차이 없습니다.
차이 없습니다. 참고로 전후로 양쪽다 공백이 들어가도 됩니다.
http://www.lysator.liu.se/c/A
http://www.lysator.liu.se/c/ANSI-C-grammar-y.html
여기의 declator , function_definition , direct_declarator등을 참고하십시오.
공백문자가 있고 없고는 의미가 없습니다. 각 lexical particle 이 상황에 따라 어떻게 해석되나 보시면 확실합니다.
표준으로 위에 문법을 어떻게 해석하냐는 조금 어려운 문제입니다. 이러한 ANSI C grammer yacc 파일이 때로는 애매한 문법이
어떻게 다르게 해석되는지 아는데 좀 더 확실한 방법일때도 있습니다. ( 보기엔 매우 어렵지만요 ㅠ_ㅠ;; )
Neogeo - Future is Now.
Neogeo - Future is Now.
문법을 해석하는
문법을 해석하는 것은 compiler지만, 그 문법을 쓰는 것은 결국 사람이기 때문에, 어떤 경우에 어떻게 사용해야할까하는 의문을 가지는 것은 상당히 좋은 자세라고 생각합니다.
T*와 T *는 언어적 의미로는 아무런 차이가 없지만 구별해서 쓰려고 하면 쓸 수 있을 겁니다.
예를 들어서 T*은 Tpointer라는 타입이고 T *는 T의 pointer라고 해석하는 것이지요.
프로그래밍을 하다보면 이 둘의 차이가 미묘하게 생깁니다.
개인적으로는 T*라고 쓰기를 좋아합니다. 제가 하는 프로그래밍 대부분에서 T*에 담겨있는 것이 중요하다고 생각하지, 담겨있는 것의 주소를 원하는 것이 아니니까요.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
모두의 진지한 답변 정말 감사드립니다.
모두의 진지한 답변, 정말 항상 감사하게 생각드리고 있습니다.
어떻게 보면 아무것도 아닌데 인터넷에서 찾아보면 될 것을 ... 이라고 생각하실 수도 있으나 T_T
특수 문자 등은 검색이 원하는 대로 잘 안되더라구요. 게다가, 다양한 생각을 가지신 분들께서
도와주셔서 항상 피가되고 살이되는 것 같네요. 감사합니다 .:)
-_-v
댓글 달기