3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
CString實(shí)際上是一個(gè)可以動(dòng)態(tài)管理內(nèi)存的類,可通過GetBuffer(int iBuffSize)給他分配共建,并返回其地址。
CString是可以轉(zhuǎn)換為const char*的。
CString實(shí)際上就可以理解為char*指針,而GetBuffer是為CString說申請內(nèi)存。
通過這么一個(gè)測試就很清楚了。
CString str1 = "";
int iSize1 = sizeof(str1);//此時(shí),iSize1=4;
CString str2 = "ABCDEFGHI";
int iSize2 = sizeof(str2); //此時(shí),iSize2=4;
如果用CString*的話,那就是相當(dāng)于指針的指針了。

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
CString變量不是指針,&CString是地址,可以賦值給指針,但和Read函數(shù)的參數(shù)類型不匹配。
而CString::GetBuffer()函數(shù)的返回值類型是char*,進(jìn)行轉(zhuǎn)換后(void*),就與參數(shù)類型匹配,所以可以。
從這個(gè)問題可以看出的基礎(chǔ)知識還不夠牢固,對指針的概念還很模糊。
CString* pstr ;
pstr是CString*類型的指針,而函數(shù)要求是void*類型的指針,類型不匹配,所以不行。
- 3 回答
- 0 關(guān)注
- 1781 瀏覽
添加回答
舉報(bào)