


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、對«theCprogramminglanguage»的讀后感首先要介紹的是本書的兩位作者,的的確確是c的發(fā)明者之一,而我選擇這本書的原因有二:其一,這是一本英文原版書,可以強化自己的英語閱讀能力(其實并不需要多少詞匯雖),對«theCprogramminglanguage一書的讀后感。二,我或多或少衷于此書的兩位作者,他們自己身為C的發(fā)明者之一是如何來闡述這門語言的。然后說說我讀完后對C的認識和對語言的認識。語言就是語言,只是用來表達或者實現(xiàn)你要描述的東西,比如算法的一*種工具,無論使用何種語言都是可以的,就好比,你可以用中文,日語,英語,法語,意大利諾。來寫一篇
2、文章,它所要表明的東西其實是一樣的。而效率而言肯定是略有不同,而在讀書的時候讓我體會最深的就是計算機中的所謂tradeoff,是一種平衡的概念,你需要得到某些性能的時候畢竟會在別的地方犧牲某些性能,比如你用C語言寫程序的時候可以相當靈活,它的檢查機制也許沒有那么嚴格,而當你使用JAVA的時候會有非常多的limits,而相對的用C寫的畢竟更接近底層,寫起來更復雜,用JAVA則相對更容易更方便一些,但是在執(zhí)行的時間上,差不多會有20倍的差距,所以具體使用何種語言取決于你要達到的目的,你是希望更快速呢,還是希望更這也是一種tradeoff印證了國人的一句話,有得必有失,但失去的東西不一定是必須的,得
3、到的也不一定是有用的。接下來說說算法和數(shù)據(jù)結構,其實鄙人在這方面絕對是班門弄斧,但自從我認真的看完這本書,不,其實是看了沒多久的時候我就感覺到書上用到了很多數(shù)據(jù)結構,很多sorting的,很多b-tree的知識,hash表的知識,list,stack,queue,以前上課的時候完全無法理解,但是現(xiàn)在漸漸的有些明白了。比如,拿sorting中的ionsort,mergesort,前者的算法很容易如果元素小于2,就不用排序了,如果大于等于2的話就從第二個元素開始往前進行比較,直到所處的位置之前的元素都比他小為止嗎,然后從第三個元素開始,第四個元素,第五個元素其實用到了兩個for-loop語句,即所
4、謂的內循環(huán)和外循環(huán),這種算法的時O(N),而后者是將一列元素分成已經排好序的兩排,將每排最小的兩個元素進行比較,放入一個數(shù)組中,繼續(xù)重復步驟即可,這樣下來它的時間復雜度是O(LOGN*N),也許從前你學到這里到這里就結束了,但是你想想,既然一個快,一個慢,那要慢的那個干嗎呢?其實他們在不同的情況下是不同速度的,前者在N較小的時候表現(xiàn)更出色,而后者在N較大的時候表現(xiàn)更出色。然后說說大家覺得最容易的基本類型問題,基本的類型有intshortlongfloatdoublechar,然后pointer,struct,union,enum等等,以前我的理解是,整型就整型唄。但是不同的整型對應不同的位數(shù),
5、整型還分為符號整,和無符號整,表示范圍當然不盡相同,不同的機器整型的位數(shù)也有區(qū)別,而所謂的char其實也算是整型,只不過是對應的ASCII碼而已,pointer是C的精髓不易掌握,但是用途確實很大,其實里面存的是內存的地址而已,沒什么太大區(qū)別,struct就是將許多類型的元素封裝起來放在一起來更加明白的表示某些數(shù)據(jù)結構而已,比如,坐標平面上的點structpointintx;inty;point;這樣你就定義了一個簡單叫做point的結構體,當然其中有個叫做typedef的東西確實相當舒服,可以大大加強一個coding中十分重要的可讀性的概念,書中反復強調,每個人都必須有自己的codingst
6、yle當然是趨向好的那種風格,對變雖的命名是十分重要的一環(huán),然后對代碼的注釋也相當重要,比如你定義了某函數(shù)某變雖,如果覺得僅僅靠函數(shù)名或者變雖名不能準確的把握其用途的話,那么請毫不猶豫的注上注釋,方便他人理解。而union無非是幾個數(shù)據(jù)類型共用了一塊內存罷了,目的是節(jié)省空間。enum的用途挺多的,有時候可以代替#defineXXXX1000之類的標志。然后是數(shù)組,好東西。連續(xù)分配多個相同類型的內存單元。用數(shù)組名表示其首元素的內存地址,什么。地址。那不就是放在指針里的東西嗎?沒錯,的的確確就是放在指針變H:中的東西,所以你完全可以寫出下面這樣的代碼,inta=(1,3,4;int*p;p=a;然
7、后就可以用指針去訪問數(shù)組里的元素了=|很詭異是吧。我也覺得。順便說一下吧=原來ANSIC是沒有string這個基本類型的,但是你可以通過下面兩種方式達到定義一個string的目的=詭異。char*p=“yourstringwords”;orcharp=“yourstringwords”;詭異吧=其實不詭異,因為p表示的都是字符串的首字符的內存地址而已。alloc和malloc我記得學數(shù)據(jù)結構的時候講鏈表的時候有過malloc的概念,當時老師講的什么反正我是忘記了,但是現(xiàn)在=首先malloc是分配的heap中的內存,這個是一個函數(shù),函數(shù)聲明大概是這樣的,void*malloc(intsize);
8、也就是說返回的是什么?是指針類型,也就是返回的時候地址,當然,如果有足夠的內存空間給你就返回其首地址嘛,如果沒有,就返回null了=表示分配失敗了,讀后感對theCprogramminglanguage一書的讀后感。alloc分配的不是heap里的內存是stack中的,而malloc是需要用戶自己使用free釋放的,而alloc無需用戶自己釋放。頭文件,最簡單的一個問題.我們常看到#includestdio.hor#include”stdio.h”前者,直接去標準庫找,后者,從當前文件中開始找,找不到,再去標準庫找。也就說如果該頭文件是自己寫的,那么肯定要用后者=。如果是標準的那么前者。問題簡
9、單吧=可悲劇的是我不知道=然后是#define#ifndef#ifdef#endif#else見過不=我想說我沒見過。書里稍稍提及,我發(fā)現(xiàn)不懂的真多,但是看看那些頭文件都是這個東西寫的=我就知道這個東西很牛。然后是一種節(jié)省空間的方式,也許有時候我們只要某個數(shù)類型的一位或者兩位就可以了=那么給了不就是浪費空間了嗎。那么我們就可以再結構體里面這樣定義=(unsignedintx:1;usignedinty:2這樣就只使用到其中的一位,分配起來就用其后的兩位=。很神奇吧=。main函數(shù)的參數(shù)問題,我搞了3個多小時,就為了做一個很容易的小程序。一個類似command_line的命令,眾所周知,main
10、函數(shù)也可以有參數(shù)一個叫intargc,char*argv顧名思義前者記錄了乂多少個參數(shù)值,后者是記錄參數(shù)值,但是argv0是不可用的,因為已經是該文件的文件名=后面的值可以自己定義=或者給予賦值=。也就是說如果我的程序名字叫echo(后面加上參數(shù)值)qinbinhuawwwww然后按下回車就要達到現(xiàn)實qinbinhuawwwww的目的=彳艮容易吧=,當然既然是command_line的命令就要在cmd下嘗試=我弱智般的從3點4點5點6點一直玩兒到7點多我媽媽都起床了,我都吃完早飯了,都沒玩兒出來,結果呢=只要把程序名字改為echo就行了=因為argv0默認的就是該程序名=而在cmd下。打該程序
11、名不就是相當于調用這個程序了嗎。簡單點講,在cmd下打這個程序名ech。就是打開這個echo.exe的程序就是運行了嘛。哎=然后我對自己來一句,白癡。在讀本書的過程中我寫了很多的小程序我看看去,一共65個吧=還不錯啦。有些蠻多行的幾白行。有些很短很短就五六行。但是通過寫這寫小程序我發(fā)現(xiàn)了=coding這個東西關鍵是動手去寫,有件事兒特別能說明這個問題=我無聊,去看看google,微軟,華為等等的面試題,找里面的題目做,其實大都是些基礎的題目=但是很多東西都忘記了=涉及也很廣,答的并不全面,但是當我看到編程題目的時候,我爽了=基本都是我平時那65個小程序里寫過的一些東西=然后我想這老子肯定能寫出
12、來。太容易了,然后一看分數(shù)一題一般都是10幾20幾分=于是2B一樣的想,都會寫哈哈哈哈。就躺下睡了,然后想著想著睡不著。琢磨著要不自己寫一下吧。反正都會寫,看看到底能不能寫出來=結果=寫是一會就寫好了就10分鐘樣子=然后就一直報錯一直重寫,一直想,一直查資料,5點6點乂是7點多的時候還沒寫出來,結果去吃個早飯,回來就該了4個符號=定義上的東西=馬上運行起來了=結果完全正確=我傻了。本來以為立馬可以寫出來的code搞了半天沒寫正確=還真是看起來容易做起來難啊。基本功不扎實。后來想想我寫的不錯嘛=然后去看評分標準,原來一個很簡單的strcmp的函數(shù),10分,實現(xiàn)了沒用,還要看你的codingsty
13、le,根據(jù)style給分,然后我一看我的code頂多給個5分。都是一些小細節(jié)的東西=命名也有問題。要想寫好一個perfect的strcmp注意的東西還是很多的=然后我找找看哪個10分的版本=。實在找不到了,悲劇。反正就是無論從函數(shù)名,變H名,變H類型,等等綜合考慮下來都有所考雖,可讀性很強=然后是我寫的那個判斷回文的的函數(shù),其實說出來很容易,寫個reverse的函數(shù)把數(shù)組內容倒置,然后用strcmp判斷是否相等就行了=考慮一下錯誤的可能性就可以了=相當簡單=可是我就因為一個字符串定義的問題搞了半天=我用的是char*a”xxxxx”;而當我改成chara=“xxxxxxx”;的時候程序就可以運行了=原因呢。我也不知道。我想出在這兩種定義方式的區(qū)別上。很煩,很雜的一篇文章,還有很多很多想要說=寫了就感覺更煩更雜了=所以就跳過了。這文章其實就寫給自己的算作是對這本書的一個小小的收尾,接下來我要投向JAVA的懷抱了,而且是中文書,輕松很多,而且學過=先是基礎然后看JSP&SERVLET那本乂是英文的,乂要糾結了,不過不看英文真的不行,中文書我終于知道為什么都是雞肋了,中文書有些翻譯不準確,而且譯者水平有限,有些東西表詞達意上肯定有出入,不像英文講起來比較淺顯易懂,而且中文書大都不結合例子,你如果去看下我看的這本c的話,你會發(fā)現(xiàn),作者不斷的在提示之前所寫的例子,而且所有的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年刮墨刀項目資金申請報告代可行性研究報告
- 2025年度教育科技股權分配及資源共享協(xié)議模板
- 2025年度事業(yè)單位聘用合同書模板(保密協(xié)議)正式版
- 2025年度保密性產品研發(fā)與生產合作協(xié)議
- 2025年河南中醫(yī)藥大學單招職業(yè)技能測試題庫及答案一套
- 2025年農村集體土地租賃與使用權轉讓協(xié)議
- 2025年度宅基地使用權流轉備案與監(jiān)管服務合同
- 二零二五年度電影演員跨界合作合同范本
- 咖啡廳垃圾運輸合作協(xié)議
- 2025年度新能源產業(yè)研發(fā)人工費合作協(xié)議
- 高等職業(yè)學校鐵道信號自動控制專業(yè)實訓教學條件建設標準
- 滌綸及滌棉織物印花
- 紋繡培訓專業(yè)藝術教程課件
- 雅思詞匯勝經電子書
- 西師版三年級下冊數(shù)學教學反思合集
- 2022年湖南汽車工程職業(yè)學院單招筆試職業(yè)技能考試試題及答案解析
- 電纜防火封堵施工標準【實用文檔】doc
- 牙周炎-牙周牙髓聯(lián)合病變
- 分布式光伏電站運行維護技術方案
- GB/T 9793-2012熱噴涂金屬和其他無機覆蓋層鋅、鋁及其合金
- GB/T 26121-2010可曲撓橡膠接頭
評論
0/150
提交評論