当前位置:IT认证>计算机二级

问题:

[单选] 有以下程序
#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

下列关于单目运算符++,— —的叙述中正确的是(  )。 它们的运算对象可以是任何变量和常量。 它们的运算对象可以是char型变量和int型变量,但不能是float型变量。 它们的运算对象可以是int型变量,但不能是double型变量和float型变量。 它们的运算对象可以是char型变量、int型变量和float型变量。 若函数中有定义语句:int a;,则(  )。 系统将自动给a赋初值为0。 系统将自动给a赋初值一l。 这时a中的值无意义。 这时a中无任何值。 下列叙述中正确的是 可以用关系运算符比较字符串的大小。 空字符串不占用内存,其内存空间大小是0。 两个连续的单引号是合法的字符常量。 两个连续的双引号是合法的字符串常量。 设有定义:int x=0,*p;,立即执行以下语句,正确的语句是 p=x;。 *p=x;。 p=NULL;。 *p=NULL;。 有以下程序
#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);
}
程序运行后的输出结果是
参考答案:

  参考解析

执行fun(&a,&b,q);语句时,在内存中开辟了一块内存空间,存放变量a 与b 的和,并用指针变量q 引用它,但是当这条语句执行结束,这块内存空间又释放了,指针这量q 仍然引用的是变量a的地址,所以输出结果为1。

在线 客服