C语言里地址的问题

地址有一个具体的数吗?像数组的地址跟指针的地址都拿来运算了那个数值是啥呀?... 地址有一个具体的数吗? 像数组的地址跟指针的地址 都拿来运算了 那个数值是啥呀? 展开
 我来答
an0011121
2013-01-09 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3948
采纳率:55%
帮助的人:2394万
展开全部

可以理解成内存就是一个大宾馆,里面的房间都有门牌号,这个门牌号就是地址的值,房间就是一个空间(空间多大呢?比如int的可以用sizeof(int)来算)。

这个地址是有值得,用十六进制来表示&x(hex)。或者%p打印地址。

 

数组的(首)地址就是数组名,比如int s[10],s就是地址。

指针,p是指针本身,*p才是指针这个空间(房间中,p有自己的房间号,*p是p的房间里面存的一个房间号)中的存储的地址。

但是真正用的时候,一般不用地址做运算,都是用地址里面的数据。gets(s)也是对这个地址的连续空间里面进行数据的输入。

 

具体地址怎么表现的呢,给你做了一张图:

百度网友0c7f977
2013-01-09 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:96.7万
展开全部
CPU寄存器、内存都会定义起始地址为零,然后用偏移来找到对应的地址。对于x86, 则地址是占4bytes的unsigned int; x64为地址为占8bytes的unsigned int
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cpucash
2013-01-09 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:973万
展开全部
是具体的数
在内存空间中,这些数据是存放在内存空间中,怎么找到呢,就是通过地址来找的
二进制位是最基本的单元,称为byte
计算机把8个这样的位弄成一组,成为字节
为每个字节编上号码,这个就是地址,通过这个地址,就可以找到所要的数据
如同一个小区,想找一个业主,是通过几号楼几单元几楼来找一样,呵呵

两个地址可以做减法运算(表示两个地址之间的隔着多少个字节),也可以一个地址减去一个常数
加法可以一个地址加上一个具体的常数,两个地址相加无意义
两个地址乘除无意义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式