프로그래밍

 3198, 1/160 회원가입  로그인  
   C language
   [C언어] 포인트 *p관련 문의

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2800 [복사]


#include <stdio.h>
void main()
{
char c='A';
char *cp=&c;
char **cpp=&cp;
char ***cppp=&cpp;

printf("%c %c %c %c\n", c, *cp, **cpp, ***cppp); // c, *cp, **cpp, ***cppp 해주는데 아랫거는 왜?
printf("%x %x %x %x\n", &c, cp, *cpp, **cppp);   // *이 하나 씩 빠지는지요..
}
이런게 있다면..
***cppp=&cpp; 이고
&cpp=**cpp;인가요..?
**cpp=&cp;
*cp=&c;

***cppp=&cpp=&cpp=**cpp=**cpp=&cp=*cp=&c 가 되서 결론은 char c='A'값을 출력하는건가요??


  Hit : 4503     Date : 2010/12/11 05:57



    
별빛을담아 으음... 위에 글 하나도 안읽고 포인트에 대해서 '내.맘.대.로' 딱 2줄로 정리해 드리죠

*는 추적연산자이고요
&는 주소연산자입니다.

만약 int *a와 int b라는 변수가 있다면...
*a = &b;
식으로 나타낸다는건 아실겁니다.
여기서 재밌는 사실은...

void a; int b=100;
a = &b;
*a = 100;

...가 가능하다는 점입니다.
두 예제를 한번 테스트 해보시고 곰곰히 생각해보세요

더불어서 알려드리자면 char a;로 선언하면 1바이트이지만...
char *a로 선언하면 4바이트 입니다. 주소는 4바이트를 차지하기 때문이지요.
게다가 %#x나 %x는 주소값을 나타낼 때 많이 쓰기 때문에...
숫자 타입의 자료형이 아니면 간혹 오류를 낼때도 많습니다. 주로 6.0에서 가끔가다 이러죠;
2010/12/11  
C language 아.. 그렇군요.. 감사합니다^^ 2010/12/12