麻烦帮解释一下,我是新学C语言的哦 这些好简单都不懂哦 答案是什么捏?

1,已知char *p,*q;,选择正确的语句()
A) p* =3; B)p/=q C) p+ =3 D)p+=q

为什么选这个答案捏 其他的怎么都不对啊?

2,若有说明: int *p1, *p2, m=5,n; ,以下均是正确赋值语句的选项是()
A) p1=&m; p2=&p1; B) p1=&m; p2=&n; *p1=*p2;
C) p1=&m; p2=p1; D) p1=&m; *p2=*p1;

其它的答案怎么就不对啊,我怎么都觉得都是对的啊?分别解释一下了

第一题选C
A p*=3 可以变成:p=p*3; 但指针是不能进行相乘或者相除的
B p/=q 可以变成:p=p/3; 理由同上
C p+=3 可以变成:p=p+3; 正确
D p+=q 可以变成:p=p+q; 指针和指针之间是不可以进行加减乘除运算的

第二题选C
A。 p1本来就是一个地址,不用再用求地址符号:&,改成p2=p1就对了
B。 *p2等于n的值, 但n还没有初始化,还没有初始值。所以错了
C。 正确
D。 *p2还没有初始化,还不能赋值,要先把指针p2初始化才能赋值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-10
第一题c
A*p=3
bcd考点是指针只能进行+-,不能进行乘除
第二题
A错在p2=&p1
B*p1=*p2
D*p1=*p2
第2个回答  2009-03-10
1)c 因为首先你定义的是两个字符型的指针,那就要回顾指针移动的知识了,指针的移动只能通过+或者-来实现,A,B被排除.之所以选C是因为他的意义是P指针向高位移动3位,再由P指向.而D则是
2)c 这道题牵扯到指针指向和定义的问题,回顾定义的知识,因为p2不是二级指针,所以p2=&p1是错误的,A,B,D都被排除
P.S 因为p2,p1是同级指针所以正确的企图使p2指向p1的赋值表达式有 p2=p1或者p1=&m,p2=&m
想理解这些多看看相关的定义知识,融会贯通就好了
第3个回答  2009-03-10
1、c
2、c
第4个回答  2009-03-10
cc
第5个回答  2009-03-10
选C
相似回答