프로그래밍

 3198, 1/160 회원가입  로그인  
   rnjsqhs1628
   c언어 공부중 포인터에서궁금한게 생겼습니다.

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


주석왼쪽 으로 된것들을 먼저 해보면 주석 오른쪽 값들이랑 똑같이 나옵니다.그런데 저는 왼쪽은 그저 값들만 변경해서 주소값은 안변한다구생각했었는데 주소값이 변하네요,?
오른쪽결과랑 값이 같은데 . 이둘은 차이점인 없는건가요.?
아무거나 써두되는건가요 .,? 읽어주셔서 감사합니다 ㅎ

#include <stdio.h>

int main(void)
{
        int num1=20,num2=30;
        int* n1=&num1;
        int* n2=&num2;
        int t=0; // int* t=0;  

        printf("주소값==num1=%p  num2=%p\n", *n1,*n2);
        printf("num1=%d  num2=%d\n", *n1,*n2);
                t=*n1; //      t=n1;
                *n1=*n2;  // n1=n2;
                *n2=t; //      n2=t;
        printf("주소값==num1=%p  num2=%p\n", *n1,*n2);
        printf("num1=%d  num2=%d\n", *n1,*n2);
        return 0;
}

  Hit : 4646     Date : 2015/05/08 03:22



    
applexx 이미 해결하셨을거라 생각하는데...
왜냐면 *n1은 주소 값이 아니라 n1의 주소값에 저장되어 있는 값이죠.
아마 값이 0x14와 0x1e가 나올거라고 생각하는데 이건 10진수로 20이랑 30입니다.
주소값을 보고싶다면 *n1에서 *을 떼주시면 됩니다.
2015/05/12