若有下面定义和赋值:int *p,*q=NULL,k=1;p=&k;以下选项中错误的赋值是()
A.*q=0;B.*p=k+1;C.p=0;D.q='\0';
====参考答案是C,求教详细解释??
答案是A;
理由:p指向k,*q=NULL,q指向NULL
*q没有分配空间所以不能赋值;A错误;
*p指向K,即k=k+1; 正确
p=0;将保存地址清零;允许赋值;正确
q是指针,定义是已经分配指针的4字节空间,相当于q=NULL;正确
没看出来错哪里,C和D应该是等价的。
语言中是禁止将数字(地址)直接赋值给指针的,即便是强制类型转换,也不一定能成功。
至于'\0',某种程度上可以当成特殊的NULL来处理~详细的可以谷歌一下。
扯淡,答案是A
在线验证,以编译器为主
http://codepad.org/98mQuITC
另外,请lz及时采纳回答。包括之前的。
以编译器为准。
个人觉得A和C都是错误的,C选项中p=0这种地址清零的用法很少,一般都是p=NULL