问题:
[单选] 有以下程序#include <stdio.h>
#include <stdlib.h>
fun(int *p1,int *p2,int *s)
{ s=(int*)malloc(sizeof(int));
*s=*p1+*p2;
free(s);
}
void main()
{ int a=1,b=40,*q=&a;
fun(&a,&b,q);
printf("%d",*q);
}
程序运行后的输出结果是
A . 42
B . 0
C . 1
D . 41
参考答案:C
参考解析:
执行fun(&a,&b,q);语句时,在内存中开辟了一块内存空间,存放变量a 与b 的和,并用指针变量q 引用它,但是当这条语句执行结束,这块内存空间又释放了,指针这量q 仍然引用的是变量a的地址,所以输出结果为1。