有以下程序 #include #include void fun( int *p1, int *p2, int *s) { s=( int*)calloc(1,sizeof(int)); *s=*p1+*p2; free(s); } main() {

admin2015-07-28  20

问题 有以下程序
#include
#include
void fun( int *p1, int *p2, int *s)
{ s=( int*)calloc(1,sizeof(int));
*s=*p1+*p2;
free(s);
}
main()
{ int a[2]={1,2}, b[2]={40,50},*q=a;
fun(a,b,q);
printf("%d\n", *q);
}
程序运行后的输出结果是( )。

选项 A、1
B、41
C、42
D、0

答案A

解析 函数fun()的功能是改变了指针s的指向。由于函数传递过程中形参只是实参的一个副本,形参指针指向的变化不能影响到实参指针的指向,所以函数fun()并不能改变实参q的指向,*q仍与a[0]等价,输出的结果为1,答案选A。
转载请注明原文地址:https://kaotiyun.com/show/SzDp777K
0

最新回复(0)