更新时间2022-03-17 16:36:21
sos】若有以下定义,则正确的程序段是__ int *p,*s,i,j; char *q,ch;2013.10.31浏览157次操作系统分享举报Amain(){*p=100;...}Bmain(){p=&ch;s=p;...}Cmain(){p=&i;q=&ch;p=q;...}Dmain(){p=&i;q=&ch;*p=40;*q=*p;...}习题答案是D,为啥有没有大佬教教
首先,你要说明你的语言,是C或C++
因为对c语言,上面所有的程序段都没有语法错,而对C++。B/C中,类型不匹配
B中,p=&ch, 直接将char *赋给int *,是C++语法不允许的
而C中,p=q,道理同B
A语法没错,但p没有分配内存,是个"野"指针,运行要出错的
所以对C++,只有D是正确的(c++的int与char变量可以隐式转换,相互赋值 )
而对c语言,B/C/D都是可以正常编译运行的,只是某些编译器会有警告信息。