int *p , int(*p)의 차이점이 뭔가요 찾아봐도 영문 사이트 밖에없어서 반환값이 다르다고 하는데 먼말인지 이해가 안되네요 ㅜ
int main() { int *a = new int; int(*aa) = new int; *a = 1; *aa = 2; printf("%d\n", *a); printf("%d\n", *aa); printf("%d\n", a); printf("%d\n", aa); (*a) = 1; (*aa) = 2; printf("%d\n", (*a)); printf("%d\n", (*aa)); printf("%d\n", (a)); printf("%d\n", (aa)); delete a; delete (aa); return 0; } 1 2 12744184 12743968 1 2 12744184 12743968 Press any key to continue . . .
---------------------------------------------------------------------------- 젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다. 정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
int *p;와 int (*p);은 둘 다 완전히 유효한 문법이며, 똑같은 기능을 합니다. 둘 다 int 타입을 가리키는 포인터 p를 선언합니다. 둘 다 함수와는 그닥 관련이 없는데 반환값 얘기는 왜 나오는지 모르겠네요.
int *p;
int (*p);
int
p
declarator에 괄호가 허용되는 이유는 아래와 같은 경우들 때문입니다.
int *p1(int); // "int를 받아 int *를 반환하는 함수" 선언 int (*p2)(int); // "int를 받아 int를 반환하는 함수"에 대한 포인터 선언 int *(p3(int)); // p1과 같음. 보통 이렇게는 안 쓰지요.
위의 예에서 보실 수 있듯 (informal하게 말하면) 선언자에서 후위로 달라붙는 ()나 []와 같은 것들이 전위의 *보다 먼저 달라붙습니다. 따라서 *를 먼저 달라붙게 해서 포인터로 만들고 싶으면 괄호를 써야만 합니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
테스트 결과는 이러네요.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
int *p;와 int (*p);은 둘 다 완전히
int *p;
와int (*p);
은 둘 다 완전히 유효한 문법이며, 똑같은 기능을 합니다. 둘 다int
타입을 가리키는 포인터p
를 선언합니다.둘 다 함수와는 그닥 관련이 없는데 반환값 얘기는 왜 나오는지 모르겠네요.
declarator에 괄호가 허용되는 이유는 아래와 같은 경우들 때문입니다.
위의 예에서 보실 수 있듯 (informal하게 말하면) 선언자에서 후위로 달라붙는 ()나 []와 같은 것들이 전위의 *보다 먼저 달라붙습니다.
따라서 *를 먼저 달라붙게 해서 포인터로 만들고 싶으면 괄호를 써야만 합니다.
댓글 달기