10.4 포인터와 배열 13:05 *ptr++
62
작성한 질문수 3
for문에서 *ptr++을 하게 되면 역참조를 먼저해서
*ptr 실행 후 ptr++로 진행하는 방식이라고 했는데, 실행되는 형태로 보면 *ptr을 먼저 실행한다면 (*ptr)++의 방식이 되면서 처음의 값이 100부터 109까지 나와야 하는 것 아닌가요?
답변 2
2
안녕하세요? 질문&답변 도우미 Soobak 입니다.
좋은 질문이시네요.
*ptr++ 는 먼저 포인터를 역참조하여 값을 가져온 후, 포인터를 증가시키는 '포인터 연산' 임을 생각해보시면 혼동되시는 부분을 명확히 하실 수 있을 것 같습니다.
*ptr++ 는 *ptr 을 통해 현재 포인터가 가리키는 값을 가져온 후, ptr++ 으로 '포인터' 를 한 칸 증가시킵니다.
(*ptr++ 표현식에서 * 역참조 연산자와 ++ 후위 증가 연산자의 우선순위로 인해 *ptr++ 은 *(ptr++) 으로 해석됩니다. 후위 증가 연산자의 특성으로 ; 을 만나기 이전까지의 연산 과정은 위와 같습니다.)
따라서, 포인터가 그 다음 배열 요소를 가리키도록 증가시키는 것으로, 배열 arr 의 각 요소들이 순차적으로 출력됩니다.
(*ptr)++; 은 말씀하신 내용과 같이 '포인터가 가리키는 값' 을 증가시키는 연산입니다.
요약해보면,*ptr++ 는 먼저 포인터를 역참조하고, 그 후 포인터를 증가시킵니다.(*ptr)++ 는 먼저 포인터가 가리키는 값을 증가시키고, 그 후 값을 사용합니다.
0
안녕하세요, 인프런 AI 인턴입니다. Jeongmin Kim님.
질문하신 주제는 “포인터의 증가 및 역참조”입니다. *ptr++ 구문은 C언어에서 포인터의 이동과 관련하여 종종 혼동의 여지를 줄 수 있는 부분입니다.
*ptr++의 의미는 “현재 ptr이 가리키고 있는 값을 참조한 뒤에 ptr을 증가시킨다”라는 의미로, 이는 후위 증가 연산자를 사용한 것입니다. 즉, 포인터 ptr 자체가 증가하기 전에 ptr이 가리키는 값을 먼저 역참조(populating)를 하게 됩니다. 따라서 이 경우엔 ptr이 가리키고 있는 현재 위치의 값을 반환하고 나서 포인터 ptr이 이동합니다.
반면 (*ptr)++ 연산은 ptr이 가리키고 있는 값을 증가시키는 연산이며, ptr 자체는 증가하지 않습니다. 따라서 *ptr++과 (*ptr)++은 기본적으로 다르게 동작합니다.
아래와 같은 예시를 통해 더 쉽게 이해하실 수 있습니다.
int arr[] = {100, 101, 102};
int *ptr = arr;
printf("%d\n", *ptr++); // 출력: 100, 그리고 ptr은 arr[1]을 가리킴.
printf("%d\n", *ptr); // 출력: 101
위 코드는 포인터가 가리키는 초기 값인 100을 출력한 후, 그 다음 위치의 값인 101을 출력하도록 합니다.
관련 질문과 답변을 통해 더 깊이 있는 이해를 원하신다면 아래의 링크를 참조하세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 질문 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
Export template 안됨
1
23
2
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
55
3
main 함수에서 왜 int만 선언이 되는걸까요
1
56
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
54
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
49
1
프로토타입과 함수간의 인자 불일치
1
73
2
12.12 헤더 관련 질문
1
60
2
Visual Studio Community 2026 사용 문의
1
138
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
61
2
getchar(), putchar()
1
93
3
강의자리ㅛ
1
80
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
114
2
소스파일안에 여러 파일
1
76
2
F5와 F7의 차이
1
77
2
c = TWO * (a+b); 에서 a와 b는?
1
58
2
; 세미콜론을 붙이는 기준에 문의
1
70
1
Step over 기능 문의
1
53
2
2.6 강의 따옴표 출력 규칙 문의
1
76
2
int main 함수 관련 오류 문의
1
67
2
13.4 words[0]
0
61
2
11.7 함수를 구현해 봤습니다.
1
62
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
65
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
53
2
11.6 fit_str함수를 구현해 봤습니다.
1
54
2





