gpt4 book ai didi

令人困惑的答案 : One says *myptr++ increments pointer first, 其他人说 *p++ 取消引用旧指针值

转载 作者:太空宇宙 更新时间:2023-11-04 06:34:44 25 4
gpt4 key购买 nike

如果你能为我澄清一下,我将不胜感激。以下是最近的两个问题及其公认的答案:

1) What is the difference between *myptr++ and *(myptr++) in C

2) Yet another sequence point query: how does *p++ = getchar() work?

第一个问题的公认答案,简洁易懂,指出由于 ++ 的优先级高于 *,指针 myptr 的增量 首先完成,然后取消引用。我什至在编译器上检查并验证了它。

但几分钟前发布的第二个问题的公认答案让我感到困惑。

它明确表示,在 *p++ 中,p 的旧地址被取消引用。我没有理由质疑第二个问题的最高评分答案的正确性,但坦率地说,我觉得它与用户 H2CO3 对第一个问题的回答相矛盾。所以谁能用通俗易懂的英语解释一下什么第二个问题的答案是什么意思,为什么 *p++ 在第二个问题中取消引用 p 的旧值。p 不应该递增吗首先,因为 ++ 具有更高的优先级?究竟如何在 *p++ 中取消引用旧地址,谢谢。

最佳答案

后缀增量运算符确实有 higher precedence比取消引用运算符,但变量的后缀递增返回该变量之前递增的值。

*myptr++

因此递增操作具有更高的优先级,但是取消引用是在递增返回的值上完成的,该值是 myptr 的先前值。


您链接到的第一个问题的答案没有错,他在回答另一个问题。

*myptr++*(myptr++) 之间没有区别,因为在这两种情况下都是先递增,然后是 myptr< 的先前值 被取消引用。

关于令人困惑的答案 : One says *myptr++ increments pointer first, 其他人说 *p++ 取消引用旧指针值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16281872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com