| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 749 人关注过本帖
标题:[讨论] 指针 ++ 问题
只看楼主 加入收藏
枫叶飘香
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2004-4-15
收藏
 问题点数:0 回复次数:7 
[讨论] 指针 ++ 问题
有如下表达式:  
    ++*P++  
    此表达式,是将当前地址的内容加 1 再指向下一个地址,还是先指向下一个地址,再将新地址内的内容加 1


++  -- 越搞越糊涂…… 哎!
搜索更多相关主题的帖子: 指针 
2005-09-13 20:51
stnlcd
Rank: 1
等 级:新手上路
帖 子:177
专家分:1
注 册:2004-11-21
收藏
得分:0 
main()  {
    char *p="acjm";
    printf("\n%c",++*p++);
    printf("\n%c",*p);
}
明白了吗?

要让一个男人破产,请给他一架相机,要让一个男人倾家荡产,请给他一架望远镜。
2005-09-13 21:08
枫叶飘香
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2004-4-15
收藏
得分:0 
嗯 ……   结果是明白了,那下面这个表达式 ++*++p 首先 指针P加1,指向下一个地址,再做++运算,从分析来看,指针现在应该是指向第2位,并且第2位值加1,如果用上面的程序来运行,第2位就应该为 d      多谢  stnlcd  指导……



や生如夏花之绚烂,死如秋叶之静美。 や很多时候,会考虑死亡,宿命或是无常。 又觉得人是可笑的,一枚棋子而已。 所以昆德拉说,人类一思考,上帝就发笑。 那么所有的意义就是在于感受过,正在感受和以后注定要感受的一切吗? 很颓废的,笑了。
2005-09-13 21:28
skago
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-9-14
收藏
得分:0 
main()  {
    char *p="acjm";
    printf("\n%c",++*p++);
    printf("\n%c",*p);
}
这个程序运行是a+1变成b,指针加1指向c;输出结果应该是c;
2005-09-14 10:53
枫叶飘香
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2004-4-15
收藏
得分:0 
是的,如果用 ++*p++ 来做 a+1变成b,指针加1指向c;输出结果为 c。
我上面那贴是将 ++*p++ 换成了 ++*++p 所以是,指针加1指向c,c+1变成d,所以输出结果为d。

在此感谢 skago 热情回应。

や生如夏花之绚烂,死如秋叶之静美。 や很多时候,会考虑死亡,宿命或是无常。 又觉得人是可笑的,一枚棋子而已。 所以昆德拉说,人类一思考,上帝就发笑。 那么所有的意义就是在于感受过,正在感受和以后注定要感受的一切吗? 很颓废的,笑了。
2005-09-14 16:40
若凡
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2005-9-9
收藏
得分:0 
搞清楚*和++的优先级是相同的,并且是右结合性就可以了

无语话凄凉
2005-09-14 23:44
gino
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-10-5
收藏
得分:0 
就和非指针的运行方式一样
i++   ++i

2005-10-05 18:33
type_error
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2005-9-28
收藏
得分:0 
讨论这种问题的人我市很鄙视的。

你能不能区分a++和++a?能不能搞清楚指针的运算?

清楚基本概念是很重要的。

写这种式子的人可以说没有道德(纯心不让别人读懂),其余没有什么。
2005-10-05 20:32
快速回复:[讨论] 指针 ++ 问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034679 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved