17강 포인터 조작과 출제패턴 / 10:00 / 이중포인터 출력 관련 문의
안녕하세요.
영상 10:00쯤(정확히는 10:39)에 printf(*(*ptr_b+1)); 부분 설명해 주실 때 *ptr_b+1은 ptr_b주소에서 char크기만큼 증가시키는거라고 설명해 주셨습니다.
그런데 이전 영상에서는 출력할때 포인터변수명 앞에 *(별표)를 붙이면 주소가 아닌 값을 가져오는거라고 설명해 주셨는데, 여기서는 왜 값이 아닌 주소를 불러오는건지 문의드립니다.
답변 2
0
역참조는 값이 맞습니다. 그런데 그 값이 주소인 경우에는 헷갈리게 됩니다.
어떤 메모리의 주소가 다른 포인터에게는 값입니다. ("값" 자체가 다른 변수의 주소)
단계별로 설명드려보겠습니다.
char **ptr_b = &ptr_a;
ptr_b의 타입은char**(이중 포인터)ptr_b에는 ptr_a의 주소가 담겨있습니다.
*ptr_b를 하면?"*를 붙였으니 값을 가져옵니다" (맞는 말)
그런데 ptr_b가
char**이므로,*ptr_b의 타입은char*입니다char*는 포인터 타입이죠?따라서 가져온 "값"이 곧 "주소"(포인터)인 것입니다.
즉,
*ptr_b=ptr_a=str의 주소
*ptr_b + 1은?*ptr_b로 값(=주소)을 가져왔고그 주소에 +1을 해서 char 크기만큼 이동시킵니다.
*(*ptr_b + 1)은?다시 *를 붙여서 그 주소에 있는 값을 최종적으로 가져옵니다.
핵심 정리
*를 붙이면 값을 가져온다"는 설명 자체는 맞습니다.다만, 포인터의 경우 그 "값" 자체가 "주소"입니다.
*ptr_b는 값을 가져오는데, ptr_b가 이중 포인터이므로 가져온 값이char*타입의 주소인 것입니다.
이것이 바로 이중 포인터의 개념입니다.
포인터를 가리키는 포인터이기 때문에, 한 번 역참조하면 여전히 포인터(주소)가 나오는 것이죠.
이렇게만 보면 어려울 수 있는데, 실제로 제가 설명하는 것처럼 네모칸 위아래를 그려서 메모리 주소와 값을 작성해서 따라가면 크게 어렵지 않게 이해하실 수 있을 겁니다.
0
안녕하세요, 인프런 AI 인턴입니다. 태0님.
이중 포인터와 관련된 질문에서 혼란스러움을 겪으셨군요. 포인터의 이해를 돕기 위해 설명을 드리겠습니다.
포인터의 기본 개념:
*ptr_b: 이 부분은ptr_b가 가리키고 있는 메모리 주소의 값을 가져옵니다. 즉,ptr_b가 저장하고 있는 주소의 값을 가져오게 됩니다.
(*ptr_b + 1):ptr_b가 가리키고 있는 배열의 첫 번째 요소에 접근한 후, 그 다음 요소의 주소로 이동하는 것을 의미합니다.
포인터 연산:
*(*ptr_b + 1): 이는 최종적으로 두 번째 레벨의 포인터를 통해 해당 메모리 주소에 저장된 값을 가져오기 위한 전체 표현식입니다. 즉,ptr_b가 가리키고 있는 포인터가 포인트하는 위치에서 다음 요소의 값을 가져오라는 의미입니다.
따라서, 이번 설명에서 *(*ptr_b + 1)이 주소를 가리키는 것이 아닌, 두 단계의 역참조를 통해 실제 저장된 값을 가져온 것임을 이해하셔야 합니다.
포인터와 메모리 주소 참조에 대해 더 많은 예시와 설명을 원하신다면, 다음 링크를 통해 관련 정보를 참조하세요:
저는 태0님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
26년2회 실기기출은 언제쯤...
0
20
2
이론 공부법 요약본 버전 업데이트 문의
0
17
2
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
54
2
조건 반복문 질문: for 문 ?
0
63
1
정처기 26-2회. 9번 질문드립니다!
0
79
1
이론 보면서 질문이 있습니다.
0
77
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
88
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
148
2
262 정처기 실기 C언어코딩
0
46
1
정보처리기사 262 실기 Hash(해시) 질문
0
80
2
static 변수 질문입니다.
0
61
2
파이썬 4강 질문입니다.
0
69
2
모의고사 1회 3번문제
0
89
3
41강 30:10
0
67
2
이론 공부법 질문 있습니다.
0
89
2
부모의 생성자 관련 질문
0
66
2
시험지 문제에 필기해도 되나요?
0
89
3
41강 11:23
0
59
2
4강파이썬 질문입니다
0
54
2
try-catch 핸들러명
0
65
2
36강 3:48
0
64
2
35강 18:27
0
66
2
자식 코드 내 super() 생략
0
60
2
출력질문
0
76
2





