728x90
반응형
1. 답
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int* numPtr1;
int** numPtr2;
int num1;
scanf("%d", &num1);
numPtr1 = &num1;
numPtr2 = &numPtr1;
printf("%d\n", **numPtr2);
return 0;
}
2. 결과
3. 정리
C언어를 학습하다보면 분명히 내가 포인터를 잘 아는 것 같았는데도 부족함을 느끼게되어 앞을 반복해서 읽게되는 현상이 많이 발생되는 것같습니다.
이중포인터 문제인데 numPtr2 = &numPtr1; 부분에서 명확하게 파악할 필요가 있었습니다. 포인터를 사용하는 목적이 가리키는 데이터를 사용하기 위한 것이었는데, 이중포인터 이상 부터는 주소 값 자체를 처리할 데이터로 생각하는 것도 좋을 것같습니다. 즉, 주소를 저장한 포인터도 하나의 변수이고 따라서 그 주소를 구할 수 있으며 또 다른 포인터에 저장하고 가리키는 방식입니다. 포인터는 꼭 변수의 데이터를 건드리지않고 주소만을 가져가는 변수입니다. 따라서 numPtr2 = numPtr1이 될수 없고 numPtr2 = &numPtr1이 되게 됩니다. 헷갈렸던 부분은 numPtr1의 데이터가 num의 주소값을 갖고 있어서 numPtr2=numPtr1을 해도 가능할 것이라 생각했던 부분이었는데, 이부분은 포인터의 정의를 명확하게 이해하지 못한데서 발생한 것으로 생각됩니다.
4. 비고
- 코딩 도장 심사문제는 아래 링크 바로가기를 눌러주세요. 간단한 가입 진행 후 이용 가능하므로 참고 부탁드립니다.
- 코딩 도장 문제 링크 바로가기 : https://dojang.io/mod/quiz/attempt.php?attempt=1840230&cmid=283
코딩 도장: 사이트에 로그인
사이트의 강좌를 수강하고 학습 효과를 최대한 높이려면 회원 가입이 필요합니다. '회원 가입' 버튼을 클릭한 후 가입 정보를 입력합니다.입력한 이메일 주소로 확인 메일이 즉시 전송됩니다.이
dojang.io
728x90
반응형
댓글