有以下程序 void fun( double *p1,double *p2,double *s) { s = (double *)calloc( 1,sizeof(double) ); *s = *p1 + *( p2+1 ); } main() { do

admin2018-10-16  19

问题 有以下程序
void fun( double *p1,double *p2,double *s)
{
s = (double *)calloc( 1,sizeof(double) );
*s = *p1 + *( p2+1 ); }
main() {
double a[2] = { 1.1, 2.2 }, b[2] = { 10.0, 20.0 }, *s=a;
fun( a, b, s );
printf( "%5.2f\n", *s); }
程序的输出结果是

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

答案A

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

随机试题
最新回复(0)