2 回答

TA貢獻(xiàn)883條經(jīng)驗 獲得超454個贊
memcpy1函數(shù)的?desc 和 src 參數(shù)類型是指針,函數(shù)的行為就是從 src 所指的內(nèi)存處復(fù)制size個字節(jié)到 dest 所指的內(nèi)存。
int dest[2] = {0} 和?const char src[5] 這兩句聲明了兩個數(shù)組 dest 和 src,數(shù)組本身當(dāng)然就是一段連續(xù)的內(nèi)存。
而且數(shù)組在用作右值時——傳參數(shù)就是此種情況——會自動轉(zhuǎn)為指向其首元素的指針,也就是說傳入memcpy1的 dest 和 src 就是指向它們這兩段內(nèi)存的指針,完全符合函數(shù)的參數(shù)要求。 而且第三個參數(shù)是就是src數(shù)組的size,所以函數(shù)可以正確執(zhí)行。
你修改的代碼是將 dest 和 src 的類型換成了string指針。 但你這兩句定義p和q的語句不符合語法!
以 string *p = "aaaa"; 為例: p是string指針。等號右側(cè)的"aaaa"是字符串字面量,本身可以當(dāng)作數(shù)組,所以在這里也會轉(zhuǎn)為指針,但它是const char指針! ?const char* 不能自動轉(zhuǎn)換為 string*,所以無法作為p的初值!編譯器即報錯。
q也是同理。
- 2 回答
- 0 關(guān)注
- 1577 瀏覽
添加回答
舉報