| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1546 人关注过本帖
标题:about pointer
只看楼主 加入收藏
skysky198344
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-10-27
收藏
得分:0 
[bo][un]nuciewth[/un] 在 2008-11-5 12:57 的发言:[/bo]


地址数加一个单位长度(假设指向的是一个int类型,那加的就是int所占的空间大小,而不是1)


也不知道书写错了,还是你说得有问题,它就是说的p+1就是指针移动一个元素。这个怎么解释呢?
2008-11-06 20:39
skysky198344
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-10-27
收藏
得分:0 
[bo][un]shmilytong[/un] 在 2008-11-5 13:05 的发言:[/bo]

根据数据类型的不同,数据所占用的存储单元也不相同。地址+1中的1实际指的是1个存储单元。


一个存储单元是对于字符型吧,对于其他的占有多个呢?
2008-11-06 20:40
skysky198344
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-10-27
收藏
得分:0 
回复 5# 的帖子
你说的好像没有道理,在银行排队,你的位次和你是一一对应的关系,但是在内存中,内存地址和存储的数据却不是一一对应的关系,它随着数据的类型来变化。如果是字符型或短整型的当然可以。我的一点见解,请思考并予以指正。
2008-11-08 23:53
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
收藏
得分:0 
[bo][un]skysky198344[/un] 在 2008-11-8 23:53 的发言:[/bo]

你说的好像没有道理,在银行排队,你的位次和你是一一对应的关系,但是在内存中,内存地址和存储的数据却不是一一对应的关系,它随着数据的类型来变化。如果是字符型或短整型的当然可以。我的一点见解,请思考并予以 ...


内存地址和数据是多对1的关系,就像银行排队一样,位置和人就不是一对一,如果你胖一些,那么你占了两个位置,两个位置上都是你,这样的话你还能说是一对一么?

你就简单理解,指针加一,就是指针的数值加上指针所指向类型的大小,也就是
p + 1 == (int)p + sizeof(*p)

一般来说int长度为CPU字长,也即指针长度,所以上面的式子一般来说是对的,不放心的话,用long也可以:
p + 1 == (long)p + sizeof(*p)

反正就是这么个意思。
2008-11-09 00:10
Tchong
Rank: 1
等 级:新手上路
帖 子:117
专家分:0
注 册:2008-10-17
收藏
得分:0 
指针这种东西是一种很难学的牛的东西
2008-11-10 23:28
Ethip
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:771
专家分:0
注 册:2008-1-18
收藏
得分:0 
2008-11-11 10:46
快速回复:about pointer
数据加载中...
 
   



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

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