若有定义char*p,ch;则不能正确赋值的语句组是 A p=&ch scanf(%c",p) B p=(char*)malloc(1) *p=getchar() C

C *p=getchar() p=&ch D p=&ch *pgetchar() 这种题怎么分析?????、

就是你必须了解指针的使用方法
1. 必须指向一个合法的内存,或者申请空间
如 p = &ch; 因为ch是一个有效的变量,p可以指向该变量的地址,这个可以
p 可以malloc 内存, 所以这个也可以
没有指向任何合法内存就赋值的肯定就是错的

所以C错
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-02
C是错的

因为在给*p赋值的时候没给p指向空间
其他3个都是先指定空间再赋值。

这样的题目分析也很简单,看看哪个和其他3个的处理顺序不一样就可以了阿本回答被提问者采纳

...*p3,*p4,ch; 则不能正确赋值的程序语句为()。 A
C 的错误在于,指针p3没有指向任何存储单元。

...以下正确的程序段是 A)p=&n;scanf("%d",&p); B)p=&n;scanf("%d...
显然是D。scanf后面的参数应该是个地址,也就是p或者是&m,&n之类的。AB错误。C中P没有初始化就直接对其指向空间赋值,也是错的,即不知道会将n写到哪个空间中去。D先将P指向的地址赋值为n的地址,然后对P指向的地址赋值为m,即n=m,正确。

...*p;char ch,*q,*g;,为什么 p=&n;q=&ch;g=p;不正确、
g=p有问题。g是字符型指针,p是整型指针。不能这样赋值

C语言字符串问题,求正确答案和解释 假设已定义char a[10]和char *p=a...
正确答案是D A错误,因为a[10]代表一个字符是吧,不能赋值字符串 B错误是因为 数组名不能当左值,也就是数组名不能被赋值 C和A同样的错误,*p代表的是a[0]D是正确的给指针赋值字符串是可以的

2. 若有以下定义,则赋值正确的是( C)。 int a ,b , *p; float c, *...
类型不对。p是指向int的指针,q却是指向float的指针,类型不同不能赋值。除非强制转换。p = NULL; :p是一个指针,但它不指向任何变量,多以答案对的。也就是暂时先不给它赋值,以后再赋值。如:int a = 0, *p;p = NULL;...p = &a;q = new : 语法错误。new是关键字。

(6) 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是
选D.A.p是一个指针,不能给它赋一个整型的值1B.*q仍然是一个指针,*q就是p.所以也不能给它赋一个整型的值.C.q=p;q是个二级指针,p是一级指针,不能把一级指针赋给二级指针.*p=5,即给n赋值为5,正确.

...下面不正确的赋值语句是---ch='a+b' ; ch='\\0' ; ch='7' +'5...
ch='a+b'是错的,'a+b'不是单bai个字符,应该是个字符串,不能直接这样赋值。 '\\0'是转义字符 '5'+'7'是两个字符相加,返回的也是字符 5+9是整型。但可以强制类型转化为字符,如果说这个错也有可能,因为没有强制类型转换,而应该是ch=(char)(5+9)。

char *p; p={"abcde"};错在哪儿
char *p="abcdef";或者char *p={"abcdef"};都可以 如果你好奇为什么,就看下面吧 首先如果你的声明是char *p; 下一个分句你对p赋值,那是在改变地址,*p才是指针指向的数据 所以第一个是相当于把一个常值字符串强制转换成了一个无符号的整型如果是32位平台 第二个报错,是因为编译器认为无法...

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

若有定义: double a=22:int i=0,k=18; 则不符合C语言规定的赋值语句是...
【答案】:C 自增、自减操作符适用于char、short、int、long、float、double等类型,故选项A正确;赋值操作符 “=”的优先级小于比较操作符“<=”,所以选项B等价于:i=((a+k)<=(i十k));,即将后面比较操作符的结果赋值给i,故选项B也正确;“!”是逻辑非运算符,i=!a表示将a表达式的值...

相似回答