A-A+

有以下程序 include<stdio.h> include<sting-h> voidfu

2022-08-12 18:49:59 问答库 阅读 197 次

问题详情

有以下程序 include<stdio.h> include<sting-h> voidfun(int*p1,int*p2,int*s){ s=(int*)calloc(1,sizeof(int)); *s=*p1+*p2;free(s);} main(){ inta[21={l,2),b[2]={40,50),*q=a; fun(a,b,q); printf(“%dn”,*q);) 程序运行后的输出结果是
A.41
B.42
C.0
D.1

请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:A
主函数定义数组a,b,q指向数组a,调用fun函数以后形参接收实参的数据,p1和p2指向数组a和b,同时s指向数组a,在fun函数中改变了s的指向和赋值,但是在程序调用结束之间形参空间全部释放,因此对于s的指向改动不会对主函数参数构成影响。因此主函数中数去+q的值仍然为1。

考点:程序