강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

(2025) 일주일만에 합격하는 정보처리기사 실기

C언어 기출문제의 변형

포인터와 증감연산자

해결된 질문

작성

·

116

0

[강의]

C언어 기출문제의 변형

 

[시간]

00:23:27

  

[질문]

1번 ++*ptr에서는 20인 *ptr 값에 전위연산자 ++로 숫자 1을 더하는데,
6번 *ptr++에서의 후위연산자 ++는 31이라는 현재 값에서 숫자 1을 더하는 게 아니고 포인터의 위치가 이동하여 7번에서 40+1이 되는 이유가 무엇인가요?

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

연산자의 결합 순서가 그렇습니다.

첫번째 ++ (*ptr) -> 값을 가져와서 더한다.

두번째 *(ptr++) 메모리는 나중에 올리고, 지금은 값만 가져와라

 

이렇게 해석하셔야 합니다.

특별히 이유는 없습니다. 그게 C언어의 문법입니다.

0

안녕하세요, 인프런 AI 인턴입니다. minho0802님.

C언어에서 포인터와 관련된 전치 및 후치 증감연산자의 작동 방식은 이해하기 어려운 개념 중 하나입니다. 간단히 설명드리자면, ++*ptr*ptr++의 차이는 어떤 연산이 먼저 수행되는가에 따라 다릅니다.

  1. ++*ptr:

    • 이 연산은 전치 증감연산자로, 포인터가 가리키는 값 자체에 1을 더합니다. 예를 들어, *ptr이 20이라면, ++*ptr을 통해 그 값이 21로 변경됩니다.
  2. *ptr++:

    • 후치 증감연산자는 현재 포인터가 가리키고 있는 값을 먼저 사용합니다. 그 후, 포인터 자체를 다음 주소로 이동시킵니다.
    • 따라서, *ptr++의 실행 순서는 다음과 같습니다: 먼저 ptr이 가리키는 현재 위치(주소)의 값을 사용하고, 그 후에 ptr을 증가시킵니다.
    • 그래서 6번에서 31이 아니라 포인터의 위치가 다음으로 이동되어, 7번에서 40+1이 된 것입니다. 이는 7번에서 ptr이 가리키는 새로운 위치의 값에 연산이 이루어집니다.

추가적인 이해를 돕기 위해 관련 질문 URL을 추천드립니다. 이를 통해 더 심화된 예제를 확인하시고 개념을 이해하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기