如何學習c語言

2021-06-27 06:17:41 字數 1818 閱讀 9109

之前請先學會如何觀察!

計算機組成原理→dos命令→組合語言→c語言(不包括c++)、**書寫規範→資料結構、編譯原理、作業系統→計算機網路、資料庫原理、正規表示式→其它語言(包括c++)、架構……

對學習程式設計者的忠告:

眼過千遍不如手過一遍!

書看千行不如手敲一行!

手敲千行不如單步一行!

單步源**千行不如單步debug版對應彙編一行!

單步debug版對應彙編千行不如單步release版對應彙編一行!

單步類的例項「構造」或「複製」或「作為函式引數」或「作為函式返回值返回」或「參加各種運算」或「退出作用域」的語句對應的彙編**幾步後,就會來到該類的「建構函式」或「複製建構函式」或「運算子過載」或「析構函式」對應的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語言的指標,原本看似複雜的東西就會變得非常簡單!

指標即位址。「位址又是啥?」「只能從組合語言和計算機組成原理的角度去解釋了。」

但我又不得不承認:

有那麼些人喜歡或者適合用「先具體再抽象」的方法學習和理解複雜事物;

而另一些人喜歡或者適合用「先抽象再具體」的方法學習和理解複雜事物。

而我本人屬前者。

不要企圖依賴輸出指標相關表示式...的值【比如printf("%p\n",...);或者cout<<...>

而要依賴除錯時的反彙編視窗中的c/c++**【比如void *p=(void *)(...);】及其對應彙編指令以及記憶體視窗中的記憶體位址和記憶體值來理解指標的本質。

這輩子不看記憶體位址和記憶體值;只畫鍊錶、指標示意圖,畫堆疊示意圖,畫各種示意圖,甚至自己沒畫過而只看過書上的圖……能從本質上理解指標、理解函式引數傳遞嗎?本人深表懷疑!

這輩子不種麥不收麥不將麥粒拿去磨麵;只吃饅頭、吃麵條、吃麵包、……甚至從沒看過別人怎麼蒸饅頭,壓麵條,烤麵包,……能從本質上理解麵粉、理解麵食嗎?本人深表懷疑!!

「學習用組合語言寫程式」

和「vc除錯(tc或bc用td除錯)時按alt+8、alt+7、alt+6和alt+5,開啟彙編視窗、堆疊視窗、記憶體視窗和暫存器視窗看每句c對應的彙編、單步執行並觀察相應堆疊、記憶體和暫存器變化,這樣過一遍不就啥都明白了嗎。

(linux或unix下可以在用gdb除錯時,看每句c對應的彙編並單步執行觀察相應記憶體和暫存器變化。)

想要從本質上理解c指標,必須學習c和彙編的對應關係。」

不是一回事!

不要迷信書、考題、老師、回帖;

要迷信cpu、編譯器、偵錯程式、執行結果。

並請結合「盲人摸太陽」和「駕船出海時一定只帶乙個指南針。」加以理解。

任何理論、權威、傳說、真理、標準、解釋、想象、知識……都比不上擺在眼前的事實!

有人說一套做一套,你相信他說的還是相信他做的?

其實嚴格來說這個世界上古往今來所有人都是說一套做一套,不是嗎?

不要寫連自己也**不了結果的**!

電腦記憶體或檔案內容只是乙個一維二進位制位元組陣列及其對應的二進位制位址;

十字鍊錶交換任意兩個節點c源**(c指標應用終極挑戰)

from:zhaosi 老師

如何學習C語言程式設計

如何學習c語言?首先舉個案例去說明我們該怎麼學習c語言程式設計,一般的資訊系統有兩種模型,一種b s模型,一種是c s模型 b s模型佔據的市場份額比較多點,b s模型使用的是http或者https協議進行通訊,而c s模型,則通過tcp udp協議進行通訊。如下圖 假設,現在要實現從客戶端給伺服器...

新手如何學習C語言?

這些天一直有人問我,c語言好學嗎?我是個新手,該如何學習?其實,這類問題困擾著很多新手。在如何學習之前,我們想簡單的了解一下什麼是c語言 c語言是一種計算機程式語言。它既有高階語言的特點,又具有組合語言的特點。它可以作為系統設計語言,編寫工作系統應用程式,也可以作為應用程式設計語言,編寫不依賴計算機...

如何學習HTML語言

學會html語言的好處是什麼?1 很輕鬆的修改你的 部落格的網頁結構。2 對seo 優化很有用處。3 拿來主義,通過儲存其他 頁面源 適當的修改,可以仿製出你想要的模板。4 當你有一張漂亮的psd原始檔時,你可以很輕易的把切割製作成網頁。5 無論是php asp net jsp等 程式語言,都要用到...