| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 810 人关注过本帖
标题:刚学到指针的小问题
只看楼主 加入收藏
lxm520910
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2007-10-3
收藏
 问题点数:0 回复次数:10 
刚学到指针的小问题
#include<stdio.h>
void main()
{
int i=2,*p=&i,*q=&i;
printf("%d,%d",*p++,*(q++));
getch();
}



*p++的意思是2++;
*(q++)在我的理解是q先取i的地址自加,然后在取那个自加后的地址所指向的内容。可那个自加后地址指向的内容未知,那结果也就无法输出的。可是却输出了2,那怎么理解的啊?? 哪位大虾给详细解释下
搜索更多相关主题的帖子: 指针 
2007-10-20 21:21
cen0225
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-9-28
收藏
得分:0 
*p++由于两个运算符的优先级别相同,结合方向是自右至左,所以它等价于*p(++)
所以*p++和*q(++) 结果相同都是2
2007-10-20 21:49
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
*p++等价*(p++)从运算符是从从右往左结合.
*(q++));

倚天照海花无数,流水高山心自知。
2007-10-20 21:52
crazyboy216
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-28
收藏
得分:0 
*p++等价*(p++),但注意啊*P+1和*(p+1)是不一样的哦
2007-10-20 21:59
lqcheng
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-8-18
收藏
得分:0 
*P+1和*(p+1)有什么不一样?
2007-10-20 22:07
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
*p是数,再加1.
(p+1) 指针先移动一个(类型空间)单位.再求这个空间的内容.

倚天照海花无数,流水高山心自知。
2007-10-20 22:15
lxm520910
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2007-10-3
收藏
得分:0 
可是*(q++),那括号先把q++括起来了   然后在*取值的啊?
2007-10-20 22:20
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
q++做的操作使得整个表达式目前指向的还是p 以前指向的那个空间地址.所以取出的是*p
但此后p指向下一个地址.

倚天照海花无数,流水高山心自知。
2007-10-20 22:23
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
*(q++),等价于*q;q++;

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-20 22:25
风的声音
Rank: 1
等 级:新手上路
帖 子:128
专家分:0
注 册:2007-3-27
收藏
得分:0 
呵呵,你主要是没有明白++的位置,先++和后++的区别。。。
*(q++),虽然是有括号,但是那个++是在整个式子完成之后才执行的,如果改成*(++q),结果自然就不一样了。。。

一念心清净,莲花处处开。 一花一净土,一土一如来。
2007-10-20 22:26
快速回复:刚学到指针的小问题
数据加载中...
 
   



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

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