강의

멘토링

로드맵

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

realbrother98님의 프로필 이미지
realbrother98

작성한 질문수

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

9.13 포인터의 기본적인 사용 방법

주소값 출력과 관련하여 질문있습니다

작성

·

295

0

int *a_ptr = &a;

1.printf(" %p\n", *a_ptr);

 

2.printf(" %p\n", &a_ptr);

 

3.printf(" %p\n", a_ptr);

 

여기서 2번은 a_ptr의 주소값을 출력하는 거고 3번은 a의 주소값을 출력해주는 건데 1번을 뭘 출력해주는 건지 궁금합니다. 실제로 확인해보니 모두 다른 값이 나와서요. 1번과 2번이 같은 값이 나올 줄 알았는데 다른 값이 나오네요.

퀴즈

프로그램에서 함수를 사용하는 주된 이유 중 하나는 무엇일까요?

프로그램 실행 속도를 항상 빠르게 만들기 위해

반복되는 코드를 줄이고 재사용성을 높이기 위해

변수를 전역적으로 선언하여 어디서든 접근하기 위해

프로그램의 메모리 사용량을 최소화하기 위해

답변 1

0

안녕하세요 

1번은 간접참조입니다! (de-referencing)

포인터 앞에 * 를 붙이면 그 포인터가 가리키는 주소의 메모리에 들어있는 값을 참조할 수 있습니다. (그렇기 때문에 *aptr 은 곧 a 입니다. 그래서 %p 보단 %d 로 출력해야 제대로 된 값이 나올거에요)

해당 강의에서 배우니 다시 복습해보시길 권합니다. (3:55~)

realbrother98님의 프로필 이미지
realbrother98

작성한 질문수

질문하기