都知道這個(gè)函數(shù)的第一個(gè)參數(shù)是緩沖區(qū) 那么 緩沖區(qū)起碼該夠大吧? 但是我這樣char *pString=new char;CString String;files.Read(pString,9);String=pString;CDC *pDC=GetDC();pDC->TextOutW(0,0,String,9);一段代碼 竟然可以正常的讀取 這是為什么呢? 難道是像字符串指針一樣? “指針指向讀出來的字符串?” 而且 如果把pString指向一個(gè)char變量 也不能正確運(yùn)行 單單new分配內(nèi)存可以 這為什么呢? 還有 Read()函數(shù)內(nèi)部是怎么把讀出來的數(shù)據(jù)放到我們提供的緩沖區(qū)的呢? 是不是一個(gè)字符一個(gè)字符的拷貝? 那和字符串指針有什么區(qū)別? 那不用初始化的指針不也可以用了嗎?Read()函數(shù)內(nèi)部是怎么把讀出來的數(shù)據(jù)放到我們提供的緩沖區(qū)的呢? 是不是一個(gè)字符一個(gè)字符的拷貝? 那和字符串指針有什么區(qū)別? 那不用初始化的指針不也可以用了嗎?
2 回答

牛魔王的故事
TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
char * 就是 string
但是你用new char ,只分配了一字節(jié)空間,能成功運(yùn)行,不代表他是正常的
Read()后,自動(dòng)一直向高地址填充數(shù)據(jù)
你又聲明了一個(gè)CString 指向了 pString的地址,也就是那個(gè)串的首地址
所以能正常輸出,
添加回答
舉報(bào)
0/150
提交
取消