내가 감사하겠습니다 말한다 먼저 포인터 말한다 What is the difference between *myptr++ and *(myptr++) in C혼란 답변 :</p> <p><strong>1)</strong> : 하나는 * myptr ++ 증가는 다른 그들의 받아 답변 최근 두 질문은 당신이 me.Here이 명확 경우 * P ++ 역 참조 된 포인터 값
2)Yet another sequence point query: how does *p++ = getchar() work?
간결하고 쉽게 이해하는 첫 번째 질문에 대한 허용 대답은, 상태가 ++
은 높은 우선 순위의 일이 있기 때문에 *
일 때 포인터 myptr
에 대한 증분이 먼저 수행 된 다음 역 참조됩니다. 심지어 컴파일러에서 확인하고 확인했습니다.
몇 분 전에 게시 된 두 번째 질문에 대한 대답이 나에게 혼란을주었습니다.
분명히 말해서 *p++
에 이전 주소 인 p
이 역 참조됩니다. 나는 두 번째 질문의 최상위 답변의 정확성에 의문을 가질만한 근거가 거의 없지만 솔직히 사용자의 첫 번째 질문의 대답과 모순된다고 느낍니다 .. 두 번째 질문의 대답이 의미하는 바는 누구나 간단하고 단순한 영어로 설명 할 수 있습니까? *p++
은 두 번째 질문에서 p
의 이전 값을 역 참조합니다. 은 우선 순위가 더 높으므로 ++
이 더 높은 우선 순위를 가지므로 먼저 증가해야합니다. 이전 주소는 어떻게 대체 될 수 있습니까? *p++
감사합니다. 이해하기 쉽게 간결하고
"첫 번째 질문 [...]에 대한 대답은 ++가 *보다 우선 순위가 높기 때문에 myptr 포인터에 대한 증가분이 먼저 완료된 다음 역 참조가됨을 나타냅니다. –
@PascalCuoq'* myptr ++'에서'++'가 우선 순위가 더 높다면,'myptr'이 처음으로 증가하고 역 참조가 되겠습니까? –
'x ++ '가 시퀀스 포인트 사이에 직접 둘러싸이지 않을 때 ('2 + 3 + * p + x ++'), **'x'가 증가 할 때를 알 수 없습니다. 우선 순위에 관계없이 이전 시퀀스 포인트와 다음 시퀀스 포인트 사이에 언제든지있을 수 있습니다. 그러나 동일한 시퀀스 포인트 사이의 다른 곳에서'x'에 쓰거나 읽는 것이 금지되어 있기 때문에 차이를 관찰 할 수 없습니다. –