c语言的一个关于指针的问题

img


初学指针,最后一个为什么是2呀,我感觉是a[3]-a[0]等于3啊,求求了

题目的坑在(*p)++上,这里p并没有改变位置,只是将第三个元素值3输出,然后将这个3加1为4
后面 * p--先输出这个4,然后指针向前移动一位,即指向第二个元素2
最后 p-2就是第二个元素距离第0个元素的距离,自然是2了

倒数第三个指针没有偏移 还是指在下标为3的位置 只是值变成4了 然后倒数第二个 向前偏移1 下标就为2 最后一个2-0就是0

有帮助的话麻烦采纳一下

++在后是先赋值,再加一

*p,*(p++)打印的是同一个元素
*(++p)是第4个元素了,因为上面一条语句打印完成后加了1,这条语句是地址加1以后再打印。

关键点就在于 printf("%d\n",(*p)++)这条语句,此条语句没有使指针移动,而是使指针指向的值加了1.