計算機組成原理→dos命令→組合語言→c語言(不包括c++)、**書寫規範→資料結構、編譯原理、作業系統→計算機網路、資料庫原理、正規表示式→其它語言(包括c++)、架構……
對學習程式設計者的忠告:
眼過千遍不如手過一遍!
書看千行不如手敲一行!
手敲千行不如單步一行!
單步源**千行不如單步對應彙編一行!
單步類的例項「構造」或「複製」或「作為函式引數」或「作為函式返回值返回」或「參加各種運算」或「退出作用域」的語句對應的彙編**幾步後,就會來到該類的「建構函式」或「複製建構函式」或「運算子過載」或「析構函式」對應的c/c++源**處。
vc除錯時按alt+8、alt+7、alt+6和alt+5,開啟彙編視窗、堆疊視窗、記憶體視窗和暫存器視窗看每句c對應的彙編、單步執行並觀察相應堆疊、記憶體和暫存器變化,這樣過一遍不就啥都明白了嗎。
對vc來說,所謂『除錯時』就是編譯連線通過以後,按f10或f11鍵單步執行一步以後的時候,或者在某行按f9設了斷點後按f5執行停在該斷點處的時候。
(turbo c或borland c用turbo debugger除錯,linux或unix下用gdb除錯時,看每句c對應的彙編並單步執行觀察相應記憶體和暫存器變化。)
想要從本質上理解c指標,必須學習彙編以及c和彙編的對應關係。
從彙編的角度理解和學習c語言的指標,原本看似複雜的東西就會變得非常簡單!
指標即位址。「位址又是啥?」「只能從組合語言和計算機組成原理的角度去解釋了。」
但我又不得不承認:
有那麼些人喜歡或者適合用「先具體再抽象」的方法學習和理解複雜事物;
而另一些人喜歡或者適合用「先抽象再具體」的方法學習和理解複雜事物。
而我本人屬前者。
這輩子不看記憶體位址和記憶體值;只畫鍊錶、指標示意圖,畫堆疊示意圖,畫各種示意圖,甚至自己沒畫過而只看過書上的圖……能從本質上理解指標、理解函式引數傳遞嗎?本人深表懷疑!
這輩子不種麥不收麥不將麥粒拿去磨麵;只吃饅頭、吃麵條、吃麵包、……甚至從沒看過別人怎麼蒸饅頭,壓麵條,烤麵包,……能從本質上理解麵粉、理解麵食嗎?本人深表懷疑!!
不要迷信書、考題、老師、回帖;
要迷信cpu、編譯器、偵錯程式、執行結果。
並請結合「盲人摸太陽」和「駕船出海時一定只帶乙個指南針。」加以理解。
任何理論、權威、傳說、真理、標準、解釋、想象、知識……都比不上擺在眼前的事實!
有人說一套做一套,你相信他說的還是相信他做的?
其實嚴格來說這個世界上古往今來所有人都是說一套做一套,不是嗎?
不要寫連自己也**不了結果的**!
計算機如何開機
作業系統是軟體,那麼計算機如何認識作業系統軟體並且執行它,開機時計算機還沒有任何軟體系統,那麼它如何讀取硬碟內的作業系統檔案,這裡就不得不講到開機程式了。bios 開機主動執行的乙個韌體 也是乙個軟體程式 會認識第乙個可開機的裝置 cmos 記錄各項硬體引數且嵌入在主機板上面的儲存器。介紹完這兩個,...
計算機如何程式設計,
北京看jkl那就看你你加兩件事就加急 裡的try catch只有try裡面丟擲異常才能被catch捕獲到 姑且猜測一下 websoket連線失敗內部處理 內部寫到console裡了 了,沒丟擲來,所以沒被catch捕獲到 再猜測一下 你是不希望console有太多的連線失敗資訊影響了其他資訊的讀取 ...
如何學習計算機
把追趕時髦技術的時間多花一點在基礎的課程上可以走得更遠的.程式設計只是計算機技術應用過程中一種複雜性最低的勞動,這就是為什麼it業最底層的人是程式設計師。計算機技術包括了多 計算機網路,人工智慧 模式識別,管理資訊系統等等這些方面。程式設計工作只是在這些具體技術在理論研究或者工程實踐的過程中表達演算...