以下程序有錯(cuò),錯(cuò)誤的原因是main(){int *p,i;char *q,ch; p=&i; q=&ch; *p=40; *p=*q
以下程序有錯(cuò),錯(cuò)誤的原因是main(){ int *p,i;char *q,ch; p=&i; q=&ch; *p=40; *p=*q; ......}A.p和q的類型不一致,不能執(zhí)行*p=*q;語(yǔ)句B.*p中存放的是地址值,因此不能執(zhí)行*p=40;語(yǔ)句C.q沒(méi)有指向具體的存儲(chǔ)單元,所以*q沒(méi)有實(shí)際意義D.q雖然指向了具體的存儲(chǔ)單元,但該單元中沒(méi)有確定的值,所以執(zhí)行*p=*q;沒(méi)有意義,可能會(huì)影響后面語(yǔ)句的執(zhí)行結(jié)果
正確答案:D在本題中,題目要求我們分析給出程序段錯(cuò)誤的原因。我們可以結(jié)合選項(xiàng)和程序段來(lái)分析。在C語(yǔ)言中,是可以將字符型的變量賦值給整型變量的,主要是由于字符型是以ASCII碼存儲(chǔ)在計(jì)算機(jī)中的,在賦值的過(guò)程中,系統(tǒng)會(huì)將其對(duì)應(yīng)的ASCII碼值賦給整型變量,選項(xiàng)A描述的錯(cuò)誤原因是不成立的。*p表示的是數(shù)值,而非地址,*p=40;語(yǔ)句是合法的語(yǔ)句,選項(xiàng)B描述的錯(cuò)誤原因也是不成立的。雖然q沒(méi)有指向具體的存儲(chǔ)單元,但*q的實(shí)際意義仍然是一樣的,選項(xiàng)C描述的錯(cuò)誤原因是不成立的。執(zhí)行*p=*q;操作沒(méi)有實(shí)際的意義,因?yàn)橹羔樧兞縬所
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。