C语言:以下程序的输出结果是怎么出来的?

2024年11月20日 19:46
有2个网友回答
网友(1):

正确答案不是A,应该是D,(可以运行试试),解释如下:
fun函数调用时,把数组a的首元素地址赋给p1,把数组b的首元素地址赋给p2,把指针s的值赋给形参s;
s=(float *)calloc(1,sizeof(float) );//为指针s开辟新的空间
*s=*p1+*p2++;//p1所指元素的值加上p2所指元素的值,把和赋给s所指变量,然后把p2所指的元素加1;因为上面为指针s新开辟了空间,从而s指向的元素不是主函数中s指向的元素,所以主函数中s指向的元素并没有变化,也就是a[0]的值不变;函数没有返回值。
主函数中的s仍然指向a的首元素,a[0]的值为1.1,故输出结果是1.10

也就是说影响这道题的关键是s=(float *)calloc(1,sizeof(float) );这一行,
如果没有这一行,答案将是A

网友(2):

fun函数就是计算a+b然后把结果赋值给s,a是取首地址指向的数1.1,b取首地址指向的数10.0,结果就是11.10。*p2++是*p2先参与运算,才再加1。