下面这道题答案是什么,并给出思考的理由.我问这个问题的原因是,书上给的答案与我的不一致.以下选项,我在C代码中均能编译执行通过,那么,从哪个角度思考来寻找错误语句呢?
若有以下定义和语句
int a=4,b=3, * p, * q, * w;
p=&a;q=& b; w=q;q=NULL;
则以下选项中错误的语句是
A.*q=0;
B.w=p;
C.*p=a;
D.*p=* w;
选A。
q为NULL,没有明确的指向,所以对其不能进行运算,也就不能用*q了
int a,*p,*q; p=&a; //正确 *q=a; //错误,因为q还没有指向,所以不能进行运算
很多人初学指针都会不清楚这个
楼上正解,选A
指针在使用前必须对它进行分配空间,否则不能赋值
指针变量,是一个变量,变量定义时需要赋值,而指针变量存储的是另外一个变量的地址,如果为0或者null则指针无效(至于为什么这样,似乎是C标准规定)。