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

2025-05-13 08:37:23
推荐回答(3个)
回答(1):

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

回答(2):

你不要管3221216112这个数字
它显示出来只是希望告诉你差值

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

至于3221216128 是怎么来的,这是一个随机又固定的数字。
随机是说不同的编译器产生的数字不通,固定是说每次运行都几乎会产生相同的数字

回答(3):

指针输出的是地址,变量输出的是地址的整数值