问题 单项选择题

有以下程序:
#include <stdio.h>
#include <stdlib.h>
int fun(int n)
int *p;
p=(int*) malloc(sizeof(int) );
*p=n; return*p;

main()
int a;
a=fun(10); printf("%d\n", a+fun(10) );

程序的运行结果是( )。

A) 0
B) 10
C) 20
D) 出错

答案

参考答案:C

解析: 本题考查的是动态内存分配。题目中的fun()函数,首先定义了一个int型指针变量p,然后动态分配一个int型大小的内存空间给它,并将它初始化为参数n的值,然后返回这个值。虽然看起来很复杂,但其实它仅仅就是将传递给它的参数保存了一份然后返回这个值。所以在主函数中,a=fun(10)令a变为10,然后调用printf()函数输出a+fun(10)的值,也就是10+10=20,所以应该选择C)。

单项选择题
单项选择题