資料介紹
我遇到過(guò)很多程序員和計(jì)算機(jī)系畢業(yè)的學(xué)生,也給很多程序員和計(jì)算機(jī)系畢業(yè)的學(xué)生講解過(guò)《高級(jí) C 語(yǔ)言程序設(shè)計(jì)》。每期班開(kāi)課前,我總會(huì)問(wèn)學(xué)生:你感覺(jué) C 語(yǔ)言學(xué)得怎么樣?難嗎?指針明白嗎?數(shù)組呢??jī)?nèi)存管理呢?往往學(xué)生回答說(shuō):感覺(jué)還可以,C 語(yǔ)言不難,指針很明白,數(shù)組很簡(jiǎn)單,內(nèi)存管理也不難。一般我會(huì)再問(wèn)一個(gè)問(wèn)題:通過(guò)這個(gè)班的學(xué)習(xí),你想達(dá)到什么程度?很多學(xué)生回答:精通 C 語(yǔ)言。我告訴他們:我很無(wú)奈,也很無(wú)語(yǔ)。因?yàn)槲彝耆诤鸵蝗簶I(yè)余者或者是 C 語(yǔ)言愛(ài)好者在對(duì)話。你們大學(xué)的計(jì)算機(jī)教育根本就是在浪費(fèi)你們的時(shí)間,念了幾年大學(xué),連 C 語(yǔ)言的門(mén)都沒(méi)摸著?,F(xiàn)在大多數(shù)學(xué)校計(jì)算機(jī)系都開(kāi)了 C、C++、Java、C#等等語(yǔ)言,好像什么都學(xué)了,但是什么都不會(huì),更可悲的是有些大學(xué)居然取消了 C 語(yǔ)言課程,認(rèn)為其過(guò)時(shí)了。我個(gè)人的觀點(diǎn)是“十鳥(niǎo)在林,不如一鳥(niǎo)在手”,真正把 C 語(yǔ)言整明白了再學(xué)別的語(yǔ)言也很簡(jiǎn)單,如果 C 語(yǔ)言都沒(méi)整明白,別的語(yǔ)言學(xué)得再好也是花架子,因?yàn)槟悴⒉涣私獾讓邮窃趺椿厥?。?dāng)然我也從來(lái)不認(rèn)為一個(gè)沒(méi)學(xué)過(guò)匯編的人能真正掌握 C 語(yǔ)言的真諦。我個(gè)人一直認(rèn)為,普通人用 C 語(yǔ)言在 3 年之下,一般來(lái)說(shuō),還沒(méi)掌握 C 語(yǔ)言;5 年之下,一般來(lái)說(shuō)還沒(méi)熟悉 C 語(yǔ)言;10 年之下,談不上精通。所以,我告訴我的學(xué)生:聽(tīng)完我的課,遠(yuǎn)達(dá)不到精通的目標(biāo),熟悉也達(dá)不到,掌握也達(dá)不到。那能達(dá)到什么目標(biāo)?-----領(lǐng)你們進(jìn)入 C 語(yǔ)言的大門(mén)。入門(mén)之后的造化如何在于你們自己。不過(guò)我可以告訴你們一條不是捷徑的捷徑:把一個(gè)鍵盤(pán)的 F10 或 F11 按壞,當(dāng)然不能是垃圾鍵盤(pán)。
往往講到這里,學(xué)生眼里總是透露著疑慮。C 語(yǔ)言有這么難嗎?我的回答是:不難。但你就是用不明白。學(xué)生說(shuō):以前大學(xué)老師講 C 語(yǔ)言,我學(xué)得很好。老師講的都能聽(tīng)懂,考試也很好。平時(shí)練習(xí)感覺(jué)自己還不錯(cuò),工作也很輕松找到了。我告訴學(xué)生:聽(tīng)明白,看明白不代表你懂了,你懂了不代表你會(huì)用了,你會(huì)用了不代表你能用明白,你能用明白不代表你真正懂了!什么時(shí)候表明你真正懂了呢?你站在我這來(lái),把問(wèn)題給下面的同學(xué)講明白,學(xué)生都聽(tīng)明白了,說(shuō)明你真正懂了。否則,你就沒(méi)真正懂,這是檢驗(yàn)懂沒(méi)懂的唯一標(biāo)準(zhǔn)。冰山大家都沒(méi)見(jiàn)過(guò),但總聽(tīng)過(guò)或是電影里看過(guò)吧?如果你連《泰坦尼克》都沒(méi)看過(guò),那你也算個(gè)人物(開(kāi)個(gè)玩笑)。《泰坦尼克》里的冰山給泰坦尼克造成了巨大的損失。你們都是理工科的,應(yīng)該明白冰山在水面上的部分只是總個(gè)冰山的 1/8。我現(xiàn)在就告訴你們,C 語(yǔ)言就是這座冰山。你們現(xiàn)在僅僅是摸到了水面上的部分,甚至根本不知道水面下的部分。我希望通過(guò)我的講解,讓你們摸到水面下的部分,讓你們知道 C 語(yǔ)言到底是什么樣子。
從現(xiàn)在開(kāi)始,除非在特殊情況下,不允許用 printf 這個(gè)函數(shù)。為什么呢?很多學(xué)生寫(xiě)完代碼,直接用 printf 打印出來(lái),發(fā)現(xiàn)結(jié)果不對(duì)。然后就舉手問(wèn)我:老師,我的結(jié)果為什么不對(duì)啊?連調(diào)試的意識(shí)都沒(méi)有!大多數(shù)學(xué)生根本就不會(huì)調(diào)試,不會(huì)看變量的值,內(nèi)存的值。只知道 printf 出來(lái)結(jié)果不對(duì),卻不知道為什么不對(duì),怎么解決。這種情況還算好的。往往很多時(shí)候 printf 出來(lái)的結(jié)果是對(duì)的,然后呢,學(xué)生也理所當(dāng)然的認(rèn)為程序沒(méi)有問(wèn)題。是這樣嗎?往往不是,往后看,你能看到例子的。永遠(yuǎn)給我記住一點(diǎn):結(jié)果對(duì),并不代表程序真正沒(méi)有問(wèn)題。所以,以后盡量不要用 printf 函數(shù),要去看變量的值,內(nèi)存的值。當(dāng)然,在我們目前的編譯器里,變量的值,內(nèi)存的值對(duì)了就代表你程序沒(méi)問(wèn)題嗎?也不是,往后,你也會(huì)看到例子的。
這個(gè)時(shí)候呢,學(xué)生往往會(huì)莫名其妙。這個(gè)老師有問(wèn)題吧。大學(xué)里我們老師都教我們?cè)趺从?printf,告訴我們要經(jīng)常用 printf。這也恰恰是大學(xué)教育失敗的地方之一。很多大學(xué)老師根本就沒(méi)真正用 C 語(yǔ)言寫(xiě)過(guò)幾行代碼,更別說(shuō)教學(xué)生調(diào)試代碼了。不調(diào)試代碼,不按 F10 或F11,水平永遠(yuǎn)也無(wú)法提上來(lái),所以,要想學(xué)好一門(mén)編程語(yǔ)言,最好的辦法就是多調(diào)試。你去一個(gè)軟件公司轉(zhuǎn)轉(zhuǎn),去看人家的鍵盤(pán),如果發(fā)現(xiàn)鍵盤(pán)上的 F10 或 F11 錚亮錚亮,毫無(wú)疑問(wèn),此機(jī)的主人曾經(jīng)或現(xiàn)在是開(kāi)發(fā)人員(這里僅指寫(xiě)代碼的,不上升到架構(gòu)設(shè)計(jì)類(lèi)的開(kāi)發(fā)人員),否則,必是非開(kāi)發(fā)人員。
C 語(yǔ)言有多少個(gè)關(guān)鍵字?sizeof 怎么用?它是函數(shù)嗎?有些學(xué)生不知道 C 語(yǔ)言有多少個(gè)關(guān)鍵字,大多數(shù)學(xué)生往往告訴我 sizeof 是函數(shù),因?yàn)樗竺娓粚?duì)括號(hào)。當(dāng)投影儀把這 32 個(gè)關(guān)鍵字投到幕布上時(shí),很多學(xué)生表情驚訝。有些關(guān)鍵字從來(lái)沒(méi)見(jiàn)過(guò),有的驚訝 C 語(yǔ)言關(guān)鍵字竟有 32 個(gè)之多。更有甚者,說(shuō)大學(xué)老師告訴他們 sizeof 是函數(shù),沒(méi)想到它居然是關(guān)鍵字!由此可想而知,大學(xué)的計(jì)算機(jī)教育是多么失??!


下面的篇幅就一一講解這些關(guān)鍵字。但在講解之前先明確兩個(gè)概念:
什么是定義?什么是聲明?它們有何區(qū)別?
舉個(gè)例子: A)int i;
B)extern int i;(關(guān)于 extern,后面解釋?zhuān)?/p>
哪個(gè)是定義?哪個(gè)是聲明?或者都是定義或者都是聲明?我所教過(guò)的學(xué)生幾乎沒(méi)有一人能回答上這個(gè)問(wèn)題。這個(gè)十分重要的概念在大學(xué)里從來(lái)沒(méi)有被提起過(guò)!
什么是定義:所謂的定義就是(編譯器)創(chuàng)建一個(gè)對(duì)象,為這個(gè)對(duì)象分配一塊內(nèi)存并給它取上一個(gè)名字,這個(gè)名字就是我們經(jīng)常所說(shuō)的變量名或?qū)ο竺?。但注意,這個(gè)名字一旦和這塊內(nèi)存匹配起來(lái)(可以想象是這個(gè)名字嫁給了這塊空間,沒(méi)有要彩禮啊。^_^),它們就同生共死,終生不離不棄。并且這塊內(nèi)存的位置也不能被改變。一個(gè)變量或?qū)ο笤谝欢ǖ膮^(qū)域內(nèi)(比如函數(shù)內(nèi),全局等)只能被定義一次,如果定義多次,編譯器會(huì)提示你重復(fù)定義同一個(gè)變量或?qū)ο蟆?/p>
什么是聲明:有兩重含義,如下:
第一重含義:告訴編譯器,這個(gè)名字已經(jīng)匹配到一塊內(nèi)存上了(伊人已嫁,吾將何去何從?何以解憂,唯有稀粥),下面的代碼用到變量或?qū)ο笫窃趧e的地方定義的。聲明可以出現(xiàn)多次。
第二重含義:告訴編譯器,我這個(gè)名字我先預(yù)定了,別的地方再也不能用它來(lái)作為變量名或?qū)ο竺?。比如你在圖書(shū)館自習(xí)室的某個(gè)座位上放了一本書(shū),表明這個(gè)座位已經(jīng)有人預(yù)訂,別人再也不允許使用這個(gè)座位。其實(shí)這個(gè)時(shí)候你本人并沒(méi)有坐在這個(gè)座位上。這種聲明最典型的例子就是函數(shù)參數(shù)的聲明,例如:
void fun(int i, char c); 好,
這樣一解釋?zhuān)覀兛梢院芮宄呐袛啵篈)是定義;
B)是聲明。
那他們的區(qū)別也很清晰了。記住,定義聲明最重要的區(qū)別:定義創(chuàng)建了對(duì)象并為這個(gè)對(duì)象分配了內(nèi)存,聲明沒(méi)有分配內(nèi)存
- C語(yǔ)言深度解剖電子版資源下載 0次下載
- C語(yǔ)言深度解剖電子版下載 0次下載
- 科大訊飛的Java面試筆試題(附帶參考答案)資料免費(fèi)下載 12次下載
- 《C語(yǔ)言深度解剖》讓你快速通過(guò)程序員面試詳細(xì)電子教材免費(fèi)下載 0次下載
- c語(yǔ)言教程之《C語(yǔ)言深度剖析:解開(kāi)程序員面試筆試的秘密》免費(fèi)下載 0次下載
- 程序員面試寶典 0次下載
- C語(yǔ)言深度解剖 8次下載
- C語(yǔ)言深度解剖----解開(kāi)程序員面試筆試的秘密 0次下載
- C語(yǔ)言深度解剖_解開(kāi)程序員面試筆試的秘密-陳正沖編著 0次下載
- 解開(kāi)程序員面試筆試的秘密-C語(yǔ)言深度解剖 陳正沖 編著 0次下載
- 解開(kāi)程序員面試筆試的秘密-C語(yǔ)言深度解剖 10次下載
- C語(yǔ)言深度解剖-解開(kāi)程序員面試筆試的秘密 72次下載
- 程序員面試寶典(pdf清晰版) 0次下載
- C語(yǔ)言深度解剖
- 程序員面試寶典下載(pdf電子書(shū))
- 如何在 樹(shù)莓派 上編寫(xiě)和運(yùn)行 C 語(yǔ)言程序? 1k次閱讀
- 技術(shù)干貨驛站 ▏深入理解C語(yǔ)言:掌握程序結(jié)構(gòu)知識(shí) 2.3k次閱讀
- 5款程序員最佳的代碼比較工具 6.8k次閱讀
- C語(yǔ)言與C++面試知識(shí)點(diǎn)總結(jié) 2.4k次閱讀
- 六款程序員必看的前端在線開(kāi)發(fā)工具 3.5k次閱讀
- 使用51單片機(jī)讀寫(xiě)AT29C040的C語(yǔ)言程序免費(fèi)下載 5.8k次閱讀
- 程序員值得一看的9本學(xué)習(xí)算法經(jīng)典書(shū)籍 4.1w次閱讀
- 程序員眼中的浪漫,如何用C語(yǔ)言畫(huà)“心”? 5.1k次閱讀
- 華為資深工程師:程序員與碼農(nóng)的差異在哪? 4.1k次閱讀
- 一個(gè)電子發(fā)燒友的程序員成長(zhǎng)之路 7.5k次閱讀
- C語(yǔ)言作為高級(jí)編程語(yǔ)言中的一門(mén)“低級(jí)”語(yǔ)言為什么要學(xué)習(xí)? 8.9k次閱讀
- 如果是初學(xué)C語(yǔ)言請(qǐng)看完,如何學(xué)好C語(yǔ)言絕對(duì)精品 9.3k次閱讀
- 數(shù)據(jù)顯示:中國(guó)程序員是世界上最牛的程序員 811次閱讀
- 十個(gè)經(jīng)典的C語(yǔ)言面試基礎(chǔ)算法及代碼介紹 3.2k次閱讀
- 程序員真正的價(jià)值是什么? 1.8k次閱讀
下載排行
本周
- 1MDD品牌三極管BC807數(shù)據(jù)手冊(cè)
- 3.00 MB | 次下載 | 免費(fèi)
- 2MDD品牌三極管BC817數(shù)據(jù)手冊(cè)
- 2.51 MB | 次下載 | 免費(fèi)
- 3MDD品牌三極管D882數(shù)據(jù)手冊(cè)
- 3.49 MB | 次下載 | 免費(fèi)
- 4MDD品牌三極管MMBT2222A數(shù)據(jù)手冊(cè)
- 3.26 MB | 次下載 | 免費(fèi)
- 5MDD品牌三極管MMBTA56數(shù)據(jù)手冊(cè)
- 3.09 MB | 次下載 | 免費(fèi)
- 6MDD品牌三極管MMBTA92數(shù)據(jù)手冊(cè)
- 2.32 MB | 次下載 | 免費(fèi)
- 7STM32G474 HRTIME PWM 丟波問(wèn)題分析與解決
- 1.00 MB | 次下載 | 3 積分
- 8新能源電動(dòng)汽車(chē)高壓線束的銅鋁連接解決方案
- 2.71 MB | 次下載 | 2 積分
本月
- 1愛(ài)華AIWA HS-J202維修手冊(cè)
- 3.34 MB | 37次下載 | 免費(fèi)
- 2PC5502負(fù)載均流控制電路數(shù)據(jù)手冊(cè)
- 1.63 MB | 23次下載 | 免費(fèi)
- 3NB-IoT芯片廠商的資料說(shuō)明
- 0.31 MB | 22次下載 | 1 積分
- 4H110主板CPU PWM芯片ISL95858HRZ-T核心供電電路圖資料
- 0.63 MB | 6次下載 | 1 積分
- 5UWB653Pro USB口測(cè)距通信定位模塊規(guī)格書(shū)
- 838.47 KB | 5次下載 | 免費(fèi)
- 6技嘉H110主板IT8628E_BX IO電路圖資料
- 2.61 MB | 4次下載 | 1 積分
- 7蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
- 0.04 MB | 4次下載 | 1 積分
- 8蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
- 0.08 MB | 2次下載 | 1 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191439次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183353次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81602次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73822次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問(wèn)
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論