求救:一个指针的问题我搞不清楚的!!!!在线等,急!!

CassiaBlossom 2005-06-22 08:42:01
若定义inta[]={1,2,3,4,5,6};具有*p=a;则表达式(*++P)++的值是?
...全文
115 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Midyta 2005-06-22
  • 打赏
  • 举报
回复
是2吧..P只加一次的...
CassiaBlossom 2005-06-22
  • 打赏
  • 举报
回复
(*++P)++
++p 指针指向 p的后一个地址=a[0]的后一个地址=a[1]
(*++p)相当于 取a[1]的值 = 2
对于表达式 c = 2++ , c的结果为2
cout << (*++p)++ ;
的输出结果为 2

这个结果绝对正确
CassiaBlossom 2005-06-22
  • 打赏
  • 举报
回复
#include "stdio.h"
void main()
{
static int a[]={1,2,3,4,5,6};
int *p=a,j;
j=(*++p)++;
printf("%d\n%d\n",(*++p)++,j);
}


运行结果是

3
2

气死我了,这道题是有答案的,答案说是5 我怎么也搞不明白的!
看样子是答案错了,真实地谢谢上面的各位的支持和帮助,我会给你们分的,多谢了!!!!!
抱歉,抱歉,抱歉!!!!!!!
AresBaker 2005-06-22
  • 打赏
  • 举报
回复
2
fshtyc 2005-06-22
  • 打赏
  • 举报
回复
我试了,结果为2,
不可能为5的。
CassiaBlossom 2005-06-22
  • 打赏
  • 举报
回复
不信的话,你们可以试一试的
结果就是5,所以我不明白了!
我一开始和你们一样的想法
foochow 2005-06-22
  • 打赏
  • 举报
回复
怎么可能是5~~~答案有问题吧??晕了
tongyongmc 2005-06-22
  • 打赏
  • 举报
回复
无论如何都不该是5啊
(*++P)++
++p 指针指向 p的后一个地址=a[0]的后一个地址=a[1]
(*++p)相当于 取a[1]的值 = 2
对于表达式 c = 2++ , c的结果为2
cout << (*++p)++ ;
的输出结果为 2
CassiaBlossom 2005-06-22
  • 打赏
  • 举报
回复
各位大虾,都不对呀!你们再好好考虑一下!!!!!

我知道是多少,但是我不知道过程是如何的!!!!

他的结果是 5

但是为什么??????我不明白!
CW_Wei 2005-06-22
  • 打赏
  • 举报
回复
2
zhangyuebin 2005-06-22
  • 打赏
  • 举报
回复


表达式值为2



(*++P)++


运算顺序为:(*(++P))++
++p //1:p=p+1指向a[2] 2:然后返回指针p==&a[2]
*(&a[2]) //得到a[2]
a[2]++ //1:返回2 2:a[2]=a[2]+1

tongyongmc 2005-06-22
  • 打赏
  • 举报
回复
卑鄙啊
表达式 (*++P)++ 和 ++(*++p) 的值不一样吗?
cout << (*++p)++ ;
结果: 2
cout << ++(*++P);
结果:3

我以为表达式的值两个都一样才对,应该算上+1的效果
foochow 2005-06-22
  • 打赏
  • 举报
回复
输出为2,不过你改变了数组的第2个元素的值
tongyongmc 2005-06-22
  • 打赏
  • 举报
回复
我猜是:
3
嘿嘿

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧