| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4162 人关注过本帖
标题:(*pointer_1)++和*pointer_1++的区别?
只看楼主 加入收藏
haoge1388645
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-11-5
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:15 
(*pointer_1)++和*pointer_1++的区别?
   (*pointer_1)++和*pointer_1++的区别?

[ 本帖最后由 haoge1388645 于 2009-11-9 10:39 编辑 ]
搜索更多相关主题的帖子: pointer 
2009-11-09 10:15
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
没有什么区别吧。pointer_1是什么类型的?
2009-11-09 10:22
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:0 
回复 2楼 m456m654
版主能不能假设一下 int *pointer_1=A ;  A=2
这样来解释下两者有没什么区别啊?我也对指针很迷糊。
2009-11-09 10:27
hsm8592
Rank: 2
等 级:论坛游民
帖 子:55
专家分:57
注 册:2009-11-6
收藏
得分:0 
你是不是想问(*pointer_1)++和*pointer_1++的区别?
2009-11-09 10:31
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:0 
回复 4楼 hsm8592
(*pionter_1)++ 和*pointer_1++都是地址加一吗?
假如*P指向一个整形数组a[]={1.2.3.}数组首地址是1000
那第一个输出的结果是不是1002?第二个是不是也是1002?
2009-11-09 10:36
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:10 
如你所说: *pointer_1=A   A=2  (并且设A为int型)
那么假设pointer在内存中的位置是0008H,则pointer指向的存储单元里面存放的就是A即2;
如果pointer++或者(pointer)++都是使pointer的值加1,那么它对应内存中位置就是0010H,它指向的存储单元里存放的数就是另一个了,具体是多少因为你没说明或者没有指向,所以就不清楚具体指向哪里了。
不过对于指针变量,你不经指定它指向某个变量就直接调用它,是非常危险的。
2009-11-09 10:39
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
++的优先级比*要高。所以对于
(*pionter_1)++ 和*pointer_1++都是地址加一吗?
假如*P指向一个整形数组a[]={1.2.3.}数组首地址是1000
两个表达式的结果都是指向a[1],即2.//说错了,对于第二个表达式结果是指向a[0]。
但是运行完后,对于第一个表达式,pointer仍在1000H,而对于第二个表达式pointer变为1002H。


[ 本帖最后由 m456m654 于 2009-11-9 10:54 编辑 ]
2009-11-09 10:43
hsm8592
Rank: 2
等 级:论坛游民
帖 子:55
专家分:57
注 册:2009-11-6
收藏
得分:0 
(*pionter_1)++ 和*pointer_1++是不一样的
*和++的优先级是相同的,运算时从右向左,*pointer_1++相当于*(pointer_1++)的值是1
(*pionter_1)++ 的值是2
2009-11-09 10:47
yinfuyong
Rank: 2
等 级:论坛游民
帖 子:35
专家分:45
注 册:2009-10-31
收藏
得分:0 
以下是引用hsm8592在2009-11-9 10:47:00的发言:

(*pionter_1)++ 和*pointer_1++是不一样的
*和++的优先级是相同的,运算时从右向左,*pointer_1++相当于*(pointer_1++)的值是1
(*pionter_1)++ 的值是2

====================================================================================
相当正确!
2009-11-09 11:22
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:0 
回复 7楼 m456m654
是不是这样理解的?对于a[]={1,2,,3}这个数组。
第一个是先指向a[0]这个地址  然后把这个地址里的元素加一再输出?那就是2
第二个是指向a[0]  这个地址  然后把地址加一再输出  那也是2。
虽然结果是一样,不过第一个指向的还是a[0]这个地址,只是在输出的时候把本来1这个元素+了1
             而第二个是在本来的地址上加一  指向的是a[1]的地址。是吗?
2009-11-09 11:54
快速回复:(*pointer_1)++和*pointer_1++的区别?
数据加载中...
 
   



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

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