|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ (*pointer_1)++和*pointer_1++的区别?
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
4162
人关注过本帖
标题:
(*pointer_1)++和*pointer_1++的区别?
只看楼主
加入收藏
haoge1388645
等 级:
新手上路
帖 子: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
等 级:
小飞侠
威 望:
3
帖 子:783
专家分:2806
注 册:2009-9-17
第
2
楼
收藏
得分:0
没有什么区别吧。pointer_1是什么类型的?
2009-11-09 10:22
举报帖子
使用道具
赠送鲜花
李若斌
等 级:
论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
第
3
楼
收藏
得分:0
回复 2楼 m456m654
版主能不能假设一下 int *pointer_1=A ;
A=2
这样来解释下两者有没什么区别啊?我也对指针很迷糊。
2009-11-09 10:27
举报帖子
使用道具
赠送鲜花
hsm8592
等 级:
论坛游民
帖 子:55
专家分:57
注 册:2009-11-6
第
4
楼
收藏
得分:0
你是不是想问(*pointer_1)++和*pointer_1++的区别?
2009-11-09 10:31
举报帖子
使用道具
赠送鲜花
李若斌
等 级:
论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
第
5
楼
收藏
得分:0
回复 4楼 hsm8592
(*pionter_1)++ 和*pointer_1++都是地址加一吗?
假如*P指向一个整形数组a[]={1.2.3.}数组首地址是1000
那第一个输出的结果是不是1002?第二个是不是也是1002?
2009-11-09 10:36
举报帖子
使用道具
赠送鲜花
m456m654
等 级:
小飞侠
威 望:
3
帖 子:783
专家分:2806
注 册:2009-9-17
第
6
楼
收藏
得分:10
如你所说: *pointer_1=A
A=2
(并且设A为int型)
那么假设pointer在内存中的位置是0008H,则pointer指向的存储单元里面存放的就是A即2;
如果pointer++或者(pointer)++都是使pointer的值加1,那么它对应内存中位置就是0010H,它指向的存储单元里存放的数就是另一个了,具体是多少因为你没说明或者没有指向,所以就不清楚具体指向哪里了。
不过对于指针变量,你不经指定它指向某个变量就直接调用它,是非常危险的。
2009-11-09 10:39
举报帖子
使用道具
赠送鲜花
m456m654
等 级:
小飞侠
威 望:
3
帖 子:783
专家分:2806
注 册:2009-9-17
第
7
楼
收藏
得分: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
等 级:
论坛游民
帖 子:55
专家分:57
注 册:2009-11-6
第
8
楼
收藏
得分:0
(*pionter_1)++ 和*pointer_1++是不一样的
*和++的优先级是相同的,运算时从右向左,*pointer_1++相当于*(pointer_1++)的值是1
(*pionter_1)++ 的值是2
2009-11-09 10:47
举报帖子
使用道具
赠送鲜花
yinfuyong
等 级:
论坛游民
帖 子:35
专家分:45
注 册:2009-10-31
第
9
楼
收藏
得分: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
举报帖子
使用道具
赠送鲜花
李若斌
等 级:
论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
第
10
楼
收藏
得分:0
回复 7楼 m456m654
是不是这样理解的?对于a[]={1,2,,3}这个数组。
第一个是先指向a[0]这个地址
然后把这个地址里的元素加一再输出?那就是2
第二个是指向a[0]
这个地址
然后把地址加一再输出
那也是2。
虽然结果是一样,不过第一个指向的还是a[0]这个地址,只是在输出的时候把本来1这个元素+了1
而第二个是在本来的地址上加一
指向的是a[1]的地址。是吗?
2009-11-09 11:54
举报帖子
使用道具
赠送鲜花
16
1/2页
1
2
快速回复:
(*pointer_1)++和*pointer_1++的区别?
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.017510 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved