인프런 커뮤니티 질문&답변

mele0404님의 프로필 이미지
mele0404

작성한 질문수

홍정모의 따라하며 배우는 C언어

9.12 포인터의 작동 원리

포인터 표현 질문

작성

·

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; 이 맞습니다.

mele0404님의 프로필 이미지
mele0404

작성한 질문수

질문하기