34.6 연습문제 : 포인터와 주소 연산자

2485 단어 CC

다음 소스 코드를 완성하여 10과 20이 각 줄에 출력되게 만드세요.


practice_pointer.c

#include <stdio.h>
int main(void) {

	int* numPtr;
	int num1 = 10;
	int num2 = 20;

	①_________________
	printf("%d\n", *numPtr);

	②_________________
	printf("%d\n", *numPtr);

	return 0;
}

실행결과

10
20



정답

① numPtr = &num1;
② numPtr = &num2;

해설

printf에서 numPtr을 역참조하여 출력했을 때 10이 나오려면 10이 저장된 변수 num1의 주소를 구해서 numPtr에 넣어주면 된다. 마찬가지로 20이 나오려면 20이 저장된 변수 num2의 주소를 구해서 numPtr에 다시 넣어주면 된다.

즉, 같은 포인터라 하더라도 어떤 메모리 주소가 들어있느냐에 따라 접근하는 장소(변수)가 달라집니다.



출처

https://dojang.io/mod/page/view.php?id=282

좋은 웹페이지 즐겨찾기