Lee Jaeyoon2
재유니버스
Lee Jaeyoon2
전체 방문자
오늘
어제
  • 분류 전체보기 (228)
    • TIL (165)
    • 생각 (11)
    • 서평 (1)
    • JavaScript & TypeScript (4)
    • React (0)
    • C (45)
    • 에러 핸들링 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 심사 문제
  • TiL
  • 5F
  • JavaScript
  • 코드숨
  • dotenv
  • C언어 코딩 도장
  • 변수
  • 코드숨 리액트 8기
  • 회고
  • map
  • C
  • c언어
  • 객체
  • 코드숨 리액트
  • 실수
  • react
  • 코딩 도장
  • 플래그
  • dotenv-webpack

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Lee Jaeyoon2

재유니버스

C

[C] C언어 코딩 도장 34.10 심사문제: 포인터와 주소 연산자 사용하기

2022. 4. 27. 09:00

표준 입력으로 정수가 입력됩니다. 다음 소스 코드를 완성하여 입력된 정수가 출력되게 만드세요.

 

표준 입력

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
    'C' 카테고리의 다른 글
    • [C] C언어 코딩 도장 36.13 심사문제: 가장 작은 수 출력하기
    • [C] C언어 코딩 도장 35.7 심사문제: 두 정수의 합 구하기
    • [C] C언어 코딩 도장 33.8 심사문제: 5와 11의 배수, 공배수 처리하기
    • [C] C언어 코딩 도장 32.6 심사문제: 중첩 루프 빠져나오기
    Lee Jaeyoon2
    Lee Jaeyoon2

    티스토리툴바