프로그래밍

 3198, 1/160 회원가입  로그인  
   moomyung93
   c언어 포인터 질문

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


포인터의 개념에 대해서 방금 공부했는데요.
*pa라는 포인터와 a라는 변수가 있다고 하고,
pa = &a를 했을때

pa == &a이고
*pa == a라고 이해를 했는데요.

그럼 결국에 pa는 a의 주소값이니까,
a = pa를 해서 a값에 pa값을 대입하고 a를 출력했을때
a의 주소값이 출력되야 한다고 생각했는데 그렇지 않네요...
왜 이게 잘못됬는지 알고싶습니다.

  Hit : 4864     Date : 2015/01/30 12:49



    
skyclad1975 int a, *pa;
pa = &a;
a = pa;

이렇게 한 후에 a를 출력하신다는 건가요?
애초에 a 라는 기본 int 형 변수와 포인터형 변수는 대입 자체가 불가능할텐데요...
변수에 포인터를 이용해 값을 넣기 위해서는 *을 이용해주어야 합니다.
일반 변수와 포인터 변수는 다른 형의 변수이기 때문에 서로 값의 대입이 불가능합니다.
2015/01/30  
melody05 a 와 pa는 서로 변수 type 이 다르므로 대입을 해 줄 수 없습니다.
윗분의 설명이 맞습니다.
2015/02/10  
sametim a의 주소값을 출력할 때에는
printf{"%p", a}; 엿나 %p 를 쓰면 나오던 걸로 기억합니다.
2015/02/26  
menial 모든 것에는 규칙이 있습니다.
일반 변수는 변수 선언하고 초기값을 넣습니다.
포인터 변수는 포인터 변수를 선언하고 난 다음에 초기값을 주소를 넣죠.
1. int a; int *pa;
2. pa =&a;

그리고 그 주소에서 값을 사용하는 싶을 때는
*pa는 바로 a의 값이 됩니다. 그렇기 때문에 *pa ==a가 됩니다.
2018/11/21  
menial skyclad1975의 설명에서
int a, *pa;
pa = &a;
a = pa; // 이런 경우는 없습니다. 재점검하세요
왼쪽은 값이고 오른 쪽은 주소입니다
2018/11/21