c语言,这个程序是怎么运行的??输出的数字是怎么来的??

 我来答
西门吹李记
2015-01-10 · TA获得超过210个赞
知道答主
回答量:60
采纳率:0%
帮助的人:52.5万
展开全部
p1,p2分别为数组a中a[0],a[4]的地址,就是对应变量的内存区域在计算机内存中的地址。
现在一般电脑的内存都有4G左右,约4*10^9个字节。例程中a[0]实际存储的地址就是在内存中地址从3221216112开始的4个字节
a[0]地址范围:3221216112~3221216115,p1指向a[0]首地址就是3221216112
a[1]地址范围:3221216116~3221216119
以此类推a[2],a[4],
a[5]地址范围:3221216128~3221216131,p2指向的内存区为3221216128
因为p1,p2是同一个数组的元素的指针,因为元素之间有前后顺序,故可相减,差等于数组元素下标只差,为4。
p1和p2强制类型转换成int型为x和y后后丢掉了数组相关的特性,称为纯整数了,相加减就是纯数字加减了故y-x=3221216128-3221216112=16
因为y数值比x大,故y>x为1
更多追问追答
追问
你讲的太好了,太吊了。
你是学这个专业的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王勃啊
2015-01-10 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5015
采纳率:62%
帮助的人:4017万
展开全部
你不要管3221216112这个数字
它显示出来只是希望告诉你差值

3221216112 和 3221216128 的差值的一定的。因为 3221216112 指向的是a的首地址
而3221216128 指向的是a[4]的地址,他们相差 4*4=16个地址。

至于3221216128 是怎么来的,这是一个随机又固定的数字。
随机是说不同的编译器产生的数字不通,固定是说每次运行都几乎会产生相同的数字
更多追问追答
追问
我大概理解了,我原以为这数字就是这个程序自己编写输出来的,所以不明白怎么赋值的。那那个4是怎么来的呢。
追答
一个整数int 占用4个字节。
从a的首地址到a[4]的地址,间隔了4个整数。总共占用了16个字节。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飘遥舞者
2015-01-10 · TA获得超过370个赞
知道小有建树答主
回答量:997
采纳率:55%
帮助的人:122万
展开全部
指针输出的是地址,变量输出的是地址的整数值
更多追问追答
追问
不懂,怎么运行的。比如3221216112
怎么来的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式