有以下程序 yoidfun(double*p1,double*p2,double*S) { S=(double*)calloc(1,sizeof(double)); *S=*pl+*(p2+1);) main( ){ doublea[2]={1.1,

admin2014-06-19  45

问题 有以下程序
yoidfun(double*p1,double*p2,double*S)
{
S=(double*)calloc(1,sizeof(double));
*S=*pl+*(p2+1);)
main(    ){
doublea[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;
fun(a,b,S);
printf(’’%5.2fin’’,*s);)
程序的输出结果是

选项 A、1.10
B、11.10
C、12.10
D、21.1

答案A

解析 ANSIC标准规定calloc函数返回值的类型为void*。具体使用格式为:calloc(n,size)。该函数用来给n个同一类型的数据项分配连续的存储空间,每个数据项的长度为size个字节。若分配成功,函数返回存储空间的首地址;否则返同空。通过调用calloc函数所分配的存储单元,系统自动置初值0。土函数中定义数组a,b,以及指针s指向数组a,渊用fun函数,实参a和b,以及s的值传递给相对应形参p1,p2,以及s,在fun函数中更改s的指向,以及指向的数据,但是函数调用结束以后,形参空间撤销,这项改变对于实参没有影响,因此实参s指向值不变,仍然为1.1。
转载请注明原文地址:https://kaotiyun.com/show/LiJp777K
0

最新回复(0)