![请问C程序中,假设一个一维数组a[],定义一个指针int *p,p=a,发现p=a与p=&a的结果是一样的,怎么解释?,第1张 请问C程序中,假设一个一维数组a[],定义一个指针int *p,p=a,发现p=a与p=&a的结果是一样的,怎么解释?,第1张](/aiimages/%E8%AF%B7%E9%97%AEC%E7%A8%8B%E5%BA%8F%E4%B8%AD%EF%BC%8C%E5%81%87%E8%AE%BE%E4%B8%80%E4%B8%AA%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84a%5B%5D%EF%BC%8C%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E6%8C%87%E9%92%88int+%2Ap%EF%BC%8Cp%3Da%EF%BC%8C%E5%8F%91%E7%8E%B0p%3Da%E4%B8%8Ep%3D%26amp%3Bamp%3Ba%E7%9A%84%E7%BB%93%E6%9E%9C%E6%98%AF%E4%B8%80%E6%A0%B7%E7%9A%84%EF%BC%8C%E6%80%8E%E4%B9%88%E8%A7%A3%E9%87%8A%EF%BC%9F.png)
不恰当的,但编译程序为了容错,就把&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)也是不正确的,原题同一欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)