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

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