在C语言中,myptr++和*(myptr++)有什么区别?

3

我将使用C语言。

假设我有一个指向整数的指针,名为*myptr。

int *myptr;

那么以下两种声明方式有什么不同呢?

*myptr++

并且...

*(myptr++)

谢谢 丹


2
第一个是你在递增指针myprt所指向的值,第二个是你获取myprt指向的下一个地址的值。 - HSN
7
对我来说,这两者是相同的。而 (*myptr)++; 则会有所不同。 - Aki Suihkonen
3
是的,没错。 - user529758
4
*pointer++ 是 C 语言的一个习惯用法。即使您不自己编写代码,您也会在他人的代码中遇到它,因此您必须知道它的作用。对于自己的代码,您可以按照自己的意愿进行操作。 - Pascal Cuoq
3
在一定程度上是可以的。有些先例非常基础,使用括号可能只会让事情变得更加混乱。你会写int a = b + (c*d);还是int a = b + c*d;?无论*ptr++是否像+*一样基础,仍然值得商榷。我倾向于认为是的。 - Daniel Fischer
显示剩余7条评论
1个回答

15

由于++的优先级高于*,因此两者之间没有区别


4
谢谢。我开始有些担心,因为在一条评论和两个答案中看到了错误的回答。 - Pascal Cuoq
@H2CO3,老兄,如果这两者没有区别,那么你如何解释我在答案中发布的程序输出呢? - Rüppell's Vulture
@Daij-Djan,你的“实践测试”是否类似于Sheer Fish的(即http://ideone.com/2l51A9)? - Pascal Cuoq
@SheerFish 这里有一个正确的代码片段示例。 你可以看到它们是相同的。 - user529758
1
@H2CO3 PascalCuoq已经向我解释了整个过程。我看到了代码中的错误所在。这就是为什么我删除了我的答案。 - Rüppell's Vulture
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接