표준 입력으로 정수가 입력됩니다. 다음 소스 코드를 완성하여 입력된 정수가 출력되게 만드세요.
표준 입력
10
표준 출력
10
judge_pointer.c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int *numPtr1;
int **numPtr2;
int num1;
scanf("%d", &num1);
___________________
___________________
printf("%d\n", **numPtr2);
return 0;
}
정답
numPtr1 = &num1;
numPtr2 = &numPtr1;
풀이
첫 번째 줄에서 *를 이용하여 포인터 변수를 선언하였고, 두 번째 줄에서 **를 이용하여 이중 포인터 변수를 선언하였다. 다음, scanf 함수로 수를 입력받아 num1에 저장하고 printf 함수로 **numPtr2의 값을 출력할 때 그 값이 같아야 한다. 따라서, numPtr1은 *를 하나만
사용하였으므로 num1의 주소를 저장하도록 해야 하고, numPtr2는 *를 두 개 사용하였으므로 numPtr1의 주소를 저장해야 한다. 그렇게, numPtr1 = &num1; 과 numPtr2 = &numPtr1;을 선언하고, 이중 포인터가 메모리에 저장된 값을 접근하기 위해 역참조 연산자 *를 두 번 사용하여 입력받은 값을 그대로 출력하게 만드는 것이다.
'C' 카테고리의 다른 글
[C] C언어 코딩 도장 36.13 심사문제: 가장 작은 수 출력하기 (0) | 2022.04.27 |
---|---|
[C] C언어 코딩 도장 35.7 심사문제: 두 정수의 합 구하기 (0) | 2022.04.27 |
[C] C언어 코딩 도장 33.8 심사문제: 5와 11의 배수, 공배수 처리하기 (0) | 2022.04.27 |
[C] C언어 코딩 도장 32.6 심사문제: 중첩 루프 빠져나오기 (0) | 2022.04.27 |
[C] C언어 코딩 도장 31.7 심사문제: 산 모양으로 별 출력하기 (0) | 2022.04.27 |