C语言题 答案选C别的 都哪错了啊

来源:百度知道 编辑:UC知道 时间:2024/06/21 06:59:49
(19(19)请选出正确的程序段
A) int *p; B) int *s, k;
scanf("%d",p); *s=100;
… …
C) int *s, k; D) int *s, k;
char *p, c; char *p, c;
s=&k; s=&k;
p=&c; p=&c;
*p='a'; s=p;
… *s=1;

看了半天,才发现原来是坚着看的啊。。。
说A,错误的原因就是楼上说的,p这个指针并没有进行初始化,其指向的地址是不定的,所以你直接赋值的话,可能会产生想不到的错误。

B也是一样的,只不过是由用户赋值改成了程序直接赋值。

D的话 s 是一个int 型的指针,指向的是一个四个字节的地址空间,而p是一个字符型的指针,指向的是一个一个字节的地址空间,大的可以往小的上变,小的怎么可以往大的变呢,所以类型检查时就会出错。
具体到 s = p;这步会报错。

把题目写清楚了!

A 肯定对的。。
B么,你先声明了一个指针S 但是没有给他指向(s=&x之类的),所以他现在指向一个不确定的空间,然后 *s=100是给一个不确定的空间赋值,可能会修改掉系统数据,造成系统瘫痪!

/c语言中时间陷阱的实现
 http://seasonfive.cn/read.php?tid-225.html
O用c语言演绎“生命游戏”
 http://seasonfive.cn/read.php?tid-224.html
8用C语言编写Windows服务程序的五个步骤
K http://seasonfive.cn/read.php?tid-216.html
p用C语言编写Windows服务程序的五个步骤
5