작성
·
151
0
int b = 0;
int *a = &b;
에서 &b는 변수 b의 메모리 주소이고, 이 주소가 예를들어 99999라면 int *a = 99999가 되는것이 아닌가요??
왜 int *a = &b 를 통해 *a가 0이 되는지 이해가 잘 가지 않습니다.
위의 상황에서 a를 출력하면 b의 메모리주소 (예: 99999)가 출력되고 *a를 출력하면 0이 출력됩니다.
이러면 *a = 0이 아닌건가요??
int *a = &b = 0 = 99999와 같은 상황이 만들어지는 것 같아 혼란스럽습니다.
+추가
스스로 이해해본 결과 scanf에서 &를 쓰는것과 비슷한 상황이며, int *a = &b 에서의 *와 *a = (정수) 에서의 *이 서로 다른 역할을 한다고 이해했습니다.
답변 1
5
int b = 0;
int *a = &b; 에서
*a는 포인터변수 a가 참조하는 변수(b)의 값입니다. (*a = b)
a는 포인터 변수(=b의 주소)입니다. (a = &b)
a = 99999;
*a = 0; 이 맞습니다.