关于c语言的问题 说下为什么错

1. 若有定义“char *p1,*p2,*p3,*p4,ch;”,则不能正确赋值的程序语句为( )。(A)p1=&ch; scanf("%c", p1);(B)p3=getchar( );(C)p2=(char*)malloc(1); scanf("%c", p2); (D)p4=&ch; *p4=getchar( );

(A)p1=&ch;//取当前地址
scanf("%c", p1);//打印的是地址中的值
(C)p2=(char*)malloc(1); 

//Malloc 向系统申请分配指定size个字节的内存空间。

scanf("%c", p2);
(D)p4=&ch; //同A一样的
*p4=getchar( );


其实指针只是定义了一下,没分配过内存,而ch是被分配了地址的,所以上面只有对ch取了地址或者分配了内存才能用。

(B)p3=getchar( );//所以这里没对应的地址,更别说打印值了,肯定是错的

附:

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-04
选B。p3是指针类型的,getchar会返回一个字符。指针不能保存字符所以错。像D那样写就对了
第2个回答  2014-01-04
答案是B getchar()取的是一个字符变量,不是地址。指针P3表示的是地址。
第3个回答  2014-01-04
b
p3是个地址,*p3才是值

关于c语言的问题 说下为什么错
其实指针只是定义了一下,没分配过内存,而ch是被分配了地址的,所以上面只有对ch取了地址或者分配了内存才能用。(B)p3=getchar( );\/\/所以这里没对应的地址,更别说打印值了,肯定是错的 附:

为什么C语言代码会报错
内存错误:C语言没有自动内存管理功能,需要程序员手动分配和释放内存。如果内存分配不正确或者越界访问,就会报错。例如,数组越界访问、野指针等。逻辑错误:代码逻辑错误是指程序按照设计要求运行,但是结果不符合预期。这种错误通常是由于代码实现上的问题引起的,例如条件语句的判断条件不正确、循环语句的循...

C语言运行问题--下面错误怎么修改??
1.拼写错误:标准I\/O流头文件是 stdio.h 楼主多写个 u 2.TC环境配置不正确:设置optation中directories下的include directories,即include文件夹的路径,要与该文件夹的实际路径对应,其它的路径最好都要一一对应准确 3.丢失文件:这个情况的可能性比较小,如果真的丢了,可以去别处COPY一个过来 ...

C语言问题?为什么会出现这个错误?
可能原因:1.是否已经有黑框在运行了?2.是否main出了问题?解决方法:1、若后台已经有黑框再运行,则结束黑框;2、若无黑眶,可能是main函数出了问题,可查看是否把函数的定义写到了main函数中。

C语言中的问题 B选项为什么错了?
那么根据题意就是3;答案c表示把a的值赋值给b,就是通常最常用的变量间的赋值,所以结果为3;D答案中因为p为指向变量a的地址,那么*p就是取出p这个地址中的变量值,所以结果也是3;只有B的答案不争取,因为a本身就是整型变量,所以不存在*a的书写形式,所以B是错误的得不到3的结果。

c语言题目, 请指出如下程序中的错误之处:
编译器会报 “构造函数不能指定返回类型”的错误。2.static friend int f( );函数f()不能同时声明为static 函数和友元函数,不然会报“储存类说明符在友元函数声明中无效”的错误。函数被声明为友元函数后,也就有了extern的属性,而extern 和static 可以说是互相对立的,所以如果先什么为友元函数后...

C语言 这个问题哪里错了
你的程序是对的。但是在TC下只能计算到8!=40320 在VC6.0下能计算到16!=2004189184 这是因为整数的范围就这么大。另外一个可能的问题是,窗口一闪就没了。最后加一个getchar();就好了

c语言程序问题 判断对错,并解释
1,正确。c语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。2,错误。宏定义是用宏名来代替一个字符串,也就是做简单的变换。所以这个跟里面的字符有没有定义无关。且事先也不做正确性检查的,只有等完全编译后才进行错误检查的。更何况未定义只是语法错误,跟宏...

C语言的运行出现不了的问题是什么问题??
C语言代码运行不出现象可能有很多原因,以下是一些常见的原因和解决方法:编译错误:代码中存在语法错误或类型错误,导致编译失败。可以通过编译器的错误提示信息来定位错误,逐一修正后重新编译。运行错误:代码编译成功,但在运行时出现错误,如数组越界、空指针、除零等错误。可以通过调试工具或打印调试信息...

关于C语言编写程序的一个疑问 高手帮忙看看我的程序哪错了
特别提醒这四个问题,祝你编程方面有所提高。另外说明一声,C语言是认汉字的,你老师说的没错。以下附上正确代码,在VC6中编译运行通过了的。具体不知道你要什么样的300个单词,这部分就自己补全吧。include<stdio.h> include <stdlib.h> include void main(void){ srand( (unsigned)time( NULL...

相似回答
大家正在搜