请问C程序中,假设一个一维数组a[],定义一个指针int *p,p=a,发现p=a与p=&a的结果是一样的,怎么解释?

请问C程序中,假设一个一维数组a[],定义一个指针int *p,p=a,发现p=a与p=&a的结果是一样的,怎么解释?,第1张

数组名是一个常数地址,这个常数再取“地址”(&a)是没有意义的,所以,&数组名

不恰当的,但编译程序为了容错,就把&a与a处理成一样了,

再举一例,函数名也是常数地址,你可以发现“&函数名”与“函数名”也是一样。

那要看你使用的int是多少位的(根据编译器不同而不同)

如果是16位int,那p每次+1就是+2个字节,也就是+2个内存单位,因此p+9就是ffca+(2*9)=ffca+12=ffdc,选B项

如果是32位int,p每次+1就是+4字节,+4内存单位,因此p+9就是ffca+(4*9)=ffca+24=ffee,4个选项都错

1.0/a/b/c因为在编程语言中,整数除以任何数结果都会是整数,小数给舍去了,所以真正要表达这个公式就是1.0/a/b/c或1.0/(a*b*c)为什么不用1/a*b*c,那是因为编程语言是没有分数这样的格式的,所以计算会给看成(1/a)*b*c此外还有1/(a*b*c)也是不正确的,原题同一


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11057682.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存