非官方勘誤 Visual C++開(kāi)發(fā)實(shí)例大全(不建議購(gòu)買(mǎi)此書(shū))

簡(jiǎn)介
在角落沉寂了半年之后,我終于翻開(kāi)了這把磚頭一樣厚的書(shū)。按照讀書(shū)計(jì)劃應(yīng)該迅速的完成本書(shū)的閱讀,然而在基礎(chǔ)部分的快速閱讀中發(fā)現(xiàn)了很多令人困擾的代碼,經(jīng)驗(yàn)證后確定了是書(shū)上代碼的問(wèn)題。官網(wǎng)勘誤的最近一條信息已是多年以前,所以在此記錄一下我發(fā)現(xiàn)的一些問(wèn)題。(書(shū)還沒(méi)看完 持續(xù)更新)
正文
代碼全部來(lái)源于隨書(shū)附帶CD!
PAGE 079 實(shí)例064 新同學(xué)的年齡
代碼在循環(huán)時(shí)不會(huì)清理數(shù)組中的原有數(shù)據(jù),如果第一次的值不能滿足所有條件并輸出新同學(xué)的年齡,那么即使后面的值是正確的也不會(huì)輸出,這一個(gè)實(shí)例的作者運(yùn)氣很好!18到21中第一個(gè)值18正好滿足條件,不需要進(jìn)行第二次while循環(huán)。
PAGE 082 實(shí)例067 集郵冊(cè)中的郵票數(shù)量
問(wèn)題出在代碼的第十四行。前面辛辛苦苦化簡(jiǎn)了公式用for循環(huán)來(lái)尋找滿足條件的值,然后一看下面,好家伙14行直接給出了x的值(b = 5 * sum / 7;)這一個(gè)實(shí)例求的就是七分之幾的sum值加十分之二的sum再加303等于sum。經(jīng)驗(yàn)證把“5”改成“x”沒(méi)有任何問(wèn)題,代碼仍然可以得到相同結(jié)果。
PAGE 086 實(shí)例069 用“*”打印圖形
這個(gè)實(shí)例的最后的秘籍心法部分,把賦值打成了復(fù)制(第三行最后一段話)。
PAGE 113 實(shí)例093 數(shù)組地址的表示方法
第三行的“int *p = &[2];”缺少了變量名,應(yīng)該改為“int *p = &array[2];”。
PAGE 122 實(shí)例101 使用指針實(shí)現(xiàn)整數(shù)排序
代碼與注釋和實(shí)例100相比,唯一的區(qū)別是主函數(shù)"return 0;"上面的"getch();",實(shí)例100中有g(shù)etch而實(shí)例101中沒(méi)有,而實(shí)例101的代碼也不能滿足實(shí)例說(shuō)明、關(guān)鍵技術(shù)以及圖3.23的截圖。(實(shí)例100是用指針實(shí)現(xiàn)兩個(gè)數(shù)字的交換,而實(shí)例101的排序錯(cuò)誤的使用了實(shí)例100的代碼)
PAGE 125 實(shí)例104 輸出二維數(shù)組的有關(guān)值
以上內(nèi)容截取自關(guān)鍵技術(shù)的第二段。其中第三行寫(xiě)道“**a代表的是首行的首地址,a+1代表的是第一行的首地址。**”根據(jù)開(kāi)頭的“**a是數(shù)組名。a數(shù)組包含3行**”可以確認(rèn),首行代表的就是第一行(而不是第零行),而后面的a+1則代表首行之后的第二行。有意思的是在百度搜索“a代表的是首行的首地址,a+1代表的是第一行的首地址?!边@一句話可以查到很多csdn投原創(chuàng)的文章。
PAGE 153 實(shí)例128 將二維數(shù)組轉(zhuǎn)換為一維數(shù)組
最后的關(guān)系式的“×4”可能跟實(shí)例說(shuō)明的截圖有關(guān),但是前面沒(méi)有任何內(nèi)容介紹二維數(shù)組的大小。在上面截取的一段話完整的來(lái)自關(guān)鍵技術(shù),所以這個(gè)“×4”的出現(xiàn)毫無(wú)道理,應(yīng)該改為二維數(shù)組每行包含的列數(shù),原式應(yīng)該為“一維數(shù)組序號(hào)=二維數(shù)組列序號(hào)+二維數(shù)組行序號(hào)×二維數(shù)組每行包含的列數(shù)”。
PAGE 157 實(shí)例132 反向輸出字符串
首先size就很多余,求的是數(shù)組的長(zhǎng)度,而不是注釋中的求字符串長(zhǎng)度。其次for循環(huán)中的“Reverse[size-i-2] = String[i];”中size-i-2的情況僅限于數(shù)組長(zhǎng)度為7且只包含六個(gè)字符的情況,否則就會(huì)把“/0”賦值到Reverse的首位或?qū)е乱绯觥R韵率俏医o出的改進(jìn)方案。
PAGE 164 實(shí)例 139 刪除數(shù)組中重復(fù)的連續(xù)元素
實(shí)例名稱(chēng)應(yīng)該改為刪除數(shù)組中的元素,代碼與標(biāo)題毫無(wú)關(guān)聯(lián),只是做出了相同的效果而已。
PAGE 168 實(shí)例 143 數(shù)組中整數(shù)的判斷
實(shí)例說(shuō)明中的解釋為,“輸入5個(gè)整型值”、“判斷用戶(hù)輸入的5個(gè)整型值中是否有整數(shù)25”,然而代碼中注釋和最后的的輸出卻是對(duì)3的判斷,另外在判斷是否已經(jīng)遍歷完整數(shù)組且未跳出的“if (i >= 5)”后面的注釋寫(xiě)的是“//判斷i是否大于等于10”。另外,在附帶光盤(pán)中查看代碼時(shí),我發(fā)現(xiàn)光盤(pán)里面實(shí)例143的代碼就是復(fù)制的實(shí)例142的代碼,沒(méi)有做任何修改(除了文件名),如下圖。

PAGE 258 實(shí)例 221 const函數(shù)的使用
代碼、截圖、標(biāo)題三者牛頭不對(duì)馬嘴,實(shí)在是懷疑這本書(shū)作者的水平。書(shū)中存在巨量類(lèi)似的錯(cuò)誤,初學(xué)者極不推薦購(gòu)買(mǎi)這本書(shū),避免被帶偏。其他的錯(cuò)誤懶得再發(fā)了,太多了......