若有定義:char *x="abcdefghi";,以下選項(xiàng)中正確運(yùn)用了strcpy函數(shù)的是______。
若有定義:char *x="abcdefghi";,以下選項(xiàng)中正確運(yùn)用了strcpy函數(shù)的是______。
A.char y[10]; strcpy(y,x[4]);
B.char y[10]; strcpy(++y,&x[1]);
C.char y[10],*s; strcpy(s=y+5,x);
D.char y[10],*s; strcpy(s=y+1,x+1);
正確答案:D解析:選項(xiàng)A中x[4]是取字符e,也就是將字符復(fù)制到y(tǒng)中,strcpy實(shí)現(xiàn)的是地址的復(fù)制所以選項(xiàng)A錯(cuò)誤;選項(xiàng)B中++y是錯(cuò)誤的,不允許對(duì)常量進(jìn)行自加運(yùn)算(y是—個(gè)確定的地址值),所以選項(xiàng)B錯(cuò)誤;選項(xiàng)C指針變量s指向了y向后的第5位,則存放x時(shí)會(huì)出現(xiàn)越界問題,所以選項(xiàng)C錯(cuò)誤;選項(xiàng)D中,指針變量s指向了y向后的第—位,此時(shí)s可存放數(shù)據(jù)的長度為9,而地址“x+1”起的字符串的地址長度也剛好為9(包括“\0”),所以開始復(fù)制不會(huì)出現(xiàn)地址越界問題,故選項(xiàng)D正確。
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。