标题: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-242516-1-1.html




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

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