작성자 없음
작성자 정보가 삭제된 글입니다.
해결된 질문
작성
·
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++
의 차이는 어떤 연산이 먼저 수행되는가에 따라 다릅니다.
++*ptr
:
*ptr
이 20이라면, ++*ptr
을 통해 그 값이 21로 변경됩니다.*ptr++
:
*ptr++
의 실행 순서는 다음과 같습니다: 먼저 ptr
이 가리키는 현재 위치(주소)의 값을 사용하고, 그 후에 ptr
을 증가시킵니다.31
이 아니라 포인터의 위치가 다음으로 이동되어, 7번에서 40+1이 된 것입니다. 이는 7번에서 ptr
이 가리키는 새로운 위치의 값에 연산이 이루어집니다.추가적인 이해를 돕기 위해 관련 질문 URL을 추천드립니다. 이를 통해 더 심화된 예제를 확인하시고 개념을 이해하실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.