请教一道二级C语言题
#include<stdio.h>#include<stdlib.h>voidfun(int*p1,int*p2,int*s){s=(int*)calloc(1,size...
#include <stdio.h>
#include <stdlib.h>
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 42
B 41
C 1
D 0
[解析] 本题考查把数组名作为函数参数。执行fun函数后,s的值并没有发生变化,仍然是指向a,所以输出结果为1,选项C正确。
*s=*p1+*p2; 是什么意思?为什么S的值没有变化呢?难道说free(s)释放了内存,就相当于s为空了吗? 展开
#include <stdlib.h>
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 42
B 41
C 1
D 0
[解析] 本题考查把数组名作为函数参数。执行fun函数后,s的值并没有发生变化,仍然是指向a,所以输出结果为1,选项C正确。
*s=*p1+*p2; 是什么意思?为什么S的值没有变化呢?难道说free(s)释放了内存,就相当于s为空了吗? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询