c語言高質量
① 高質量程序設計指南:C++/c語言(第3版)適合初學者看嗎
不太適合沒有任何基礎的人看,這本書不是教材類型的,是作為輔導書使用的。所以建議有點基礎再看,裡麵包含了C跟C++的各種規范、知識點。
② C語言中合法標識符的要求
標識符由字母(A-Z,a-z)、數字(0-9)、下劃線「_」組成,並且首字元不能是數字,但可以是字母或者下劃線。例如,正確的標識符:abc,a1,prog_to。不能把C語言關鍵字作為用戶標識符,例如if,for,while等。
標識符長度是由機器上的編譯系統決定的,一般的限制為8字元(註:8字元長度限制是C89標准,C99標准已經擴充長度,其實大部分工業標准都更長)。
標識符對大小寫敏感,即嚴格區分大小寫。一般對變數名用小寫,符號常量命名用大寫。標識符命名應做到「見名知意」,例如,長度(length),求和、總計(sum),圓周率(pi)。
(2)c語言高質量擴展閱讀
C語言特點
(1)簡潔的語言
C語言包含的各種控制語句僅有9種,關鍵字也只有32 個,程序的編寫要求不嚴格且以小寫字母為主,對許多不必要的部分進行了精簡。
實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。
(2)具有結構化的控制語句
C語言是一種結構化的語言,提供的控制語句具有結構化特徵,如for語句、if⋯else語句和switch語句等。可以用於實現函數的邏輯控制,方便麵向過程的程序設計。
(3)豐富的數據類型
C語言包含的數據類型廣泛,不僅包含有傳統的字元型、整型、浮點型、數組類型等數據類型,還具有其他編程語言所不具備的數據類型,其中以指針類型數據使用最為靈活,可以通過編程對各種數據結構進行計算。
(4)豐富的運算符
C語言包含34個運算符,它將賦值、括弧等均是作運算符來操作,使C程序的表達式類型和運算符類型均非常豐富。
(5)可對物理地址進行直接操作
C語言允許對硬體內存地址進行直接讀寫,以此可以實現匯編語言的主要功能,並可直接操作硬體。C語言不但具備高級語言所具有的良好特性,又包含了許多低級語言的優勢,故在系統軟體編程領域有著廣泛的應用。
(6)代碼具有較好的可移植性
C語言是面向過程的編程語言,用戶只需要關注所被解決問題的本身,而不需要花費過多的精力去了解相關硬體,且針對不同的硬體環境,在用C語言實現相同功能時的代碼基本一致,不需或僅需進行少量改動便可完成移植。
這就意味著,對於一台計算機編寫的C程序可以在另一台計算機上輕松地運行,從而極大的減少了程序移植的工作強度。
(7)可生成高質量、目標代碼執行效率高的程序
與其他高級語言相比,C語言可以生成高質量和高效率的目標代碼,故通常應用於對代碼質量和執行效率要求較高的嵌入式系統程序的編寫。
③ 怎樣學習c語言
首先申明,本人不是什麼高手,但自認為對c還比較熟悉,可以給你提點建議:
【一】、學習C語言,要從入門到精通,需要讀哪些書(從簡單的到難的排序,越詳細越好,最好都能注釋下選擇這本書的理由)?
入門階段:還是老譚那本。
理由:雖然不能說它寫得有多好,但是你現在要做的是入門,要快速的掌握c的基本語法,這本書很好理解,能夠讓你在最短的時間內大致掌握這門語言的概更。
第二階段:《c程序設計語言》(The C Programming Language)和《C語言解惑》(The C puzzle book)
理由:《the c programming language》號稱c語言聖經。其實它也只是一本介紹基礎語法的書,不做入門教程是因為對於初學者來說,它難度稍大,之所以推薦,是因為它能讓你---系統而嚴密的---把C語言知識構架整理一遍。《c語言解惑》,系統的整理了c語法中容易讓你產生迷惑或容易犯錯的地方(如a+++++b等),這時候你才算真正開始學習c語言了.(以上兩本現在出重印了,應該在書店可以買到)
第三階段:《C陷阱與缺陷》(C Traps and Pitfalls)和《高質量c/c++編程指南》
理由:《c陷阱與缺陷》是讓對c的理解有質變得一本書,如如何理解(*(void(*)())0)()等問題,我的感覺是看完這本書讓我真正從小菜鳥變成了老菜鳥。《高質量...》,終於有一本國產的了,呵呵,我認為這本書是把你從土匪變成正規軍的最好指南,該書涉及編程風格、效率、重載、健壯性等一些列之前很難注意的問題。(以上兩本《c陷阱...》已絕版,不過網上可以下載到中英文版,《高質量...》本身就是網路書,很容易找到)
其它推薦書:《c專家編程》《c和指針》
說實話這兩本書我並沒有看過(或看完),但有口皆碑,都是經典之作,不過都已經絕版,仔細找找網上有下載的。
【二】、有哪些好的C語言練習(越難的越好)?
對語言本身的練習其實就是你對它的理解,用得多了,注意得多了,自然就ok了。其它思維上的練習主要是演算法和數據結構方面的,嚴老的《數據結構題集(C語言版)》如果你能做完就相當了不起了。
【三】、要學精C語言,還要具備哪些條件?
其實c語言也只是一個工具而已,就像鋤頭一樣,你每天挖地鋤田自然就精通它了。只要不是白痴,應該都沒有問題。
【四】、C語言學完後接下去要學哪些語言好?
這個我就沒有資格回答了,因為除了少量匯編和c++,我大部分只用到了c,不過也許是一脈相承的c++吧。c是面向過程的語言,學習c++面向對象的思想。
【五】、各位網友如果在學習計算機語言方面還有一些獨到的見解,歡迎提出!
不是我提出的,不過真的很經典——「天下程序一大抄」,呵呵。
④ 高質量c語言
首先,一樓的回答很具有參考性!
高質量c語言,這個涉及到c語言的運行以及鏈接等。這個不僅僅包括c語言的前期的編程,同時,要考慮到c程序在實際的運行過程中的節省運行時間,和節省電腦的內存。(這兒的高質量c語言,可不能脫離c這個范疇,如果你說的是c++,那麼,以下內容都是廢話——不同的程序編寫語言就)
而譚老爺子的c語言教程,這個是最基礎的入門。但是是經典的入門手冊。很規范。為了便於初學者的學習和理解,很多的東西都細化了。這樣,它不可避免的有些啰嗦,冗餘。會在運行的過程中造成一些時間、內存的浪費。
所以,如果你要是還沒有入門的話,那麼,建議你學習譚老爺子的 c程序設計。 扎實的基礎,有助於你以後的學習和編程。
如果,你已近入門,上升到了深化階段(估計這樣,你也不會在這兒發問了O(∩_∩)O~)。那麼,你必須學會編寫高質量的程序。
⑤ 學習c語言者能否看懂高質量C++/c編程指南
可以嘗試看看,C++本來就是C語言的升級,其實許多編程理念還是相似的
只不過所用的方法不同而已,C++使用面向對象而C語言則是結構化的編程設計
如果樓主覺得C語言有點心得的話,可以向C++進軍,因為面向對象的編程理念
早已成為了主流,遲早要接觸的!
⑥ 《高質量程序設計指南--C++/C語言(第3版)》最新txt全集下載
高質量程序設計指南--C++/C語言(第3版) txt全集小說附件已上傳到網路網盤,點擊免費下載:
⑦ 誰能給我推薦一個自學c語言的網站,要高質量的,謝謝!!!
我最近也在學習二級C語言,我是在快動網上看的視頻,有二級全套視頻和公共知識,可以在線免費看,我就是下載下來學習的,還有配套電子教材所以不用買書哦,上面還有好多測試題還帶有講解。你在網路上搜索快動網就能找到了,希望能幫助你。
⑧ 大家認為C語言學到什麼程度就算學的不錯了
若不讀上十幾本名著,想成為編程高手,怕是難!
—— 林銳
如果你認為你是高手了,再讀下林銳的高質量C++/C 編程指南,如果你比他強了,我覺得你學的還不錯了!
高質量C++/C 編程指南,v 1.0
2001 Page 6 of 101
前 言
軟體質量是被大多數程序員掛在嘴上而不是放在心上的東西!
除了完全外行和真正的編程高手外,初讀本書,你最先的感受將是驚慌:「哇!我以
前捏造的C++/C 程序怎麼會有那麼多的毛病?」
別難過,作者只不過比你早幾年、多幾次驚慌而已。
請花一兩個小時認真閱讀這本百頁經書,你將會獲益匪淺,這是前面N-1 個讀者的
建議。
一、編程老手與高手的誤區
自從計算機問世以來,程序設計就成了令人羨慕的職業,程序員在受人寵愛之後容
易發展成為毛病特多卻常能自我臭美的群體。
如今在Internet 上流傳的「真正」的程序員據說是這樣的:
(1) 真正的程序員沒有進度表,只有討好領導的馬屁精才有進度表,真正的程序員會讓
領導提心吊膽。
(2) 真正的程序員不寫使用說明書,用戶應當自己去猜想程序的功能。
(3) 真正的程序員幾乎不寫代碼的注釋,如果注釋很難寫,它理所當然也很難讀。
(4) 真正的程序員不畫流程圖,原始人和文盲才會干這事。
(5) 真正的程序員不看參考手冊,新手和膽小鬼才會看。
(6) 真正的程序員不寫文檔也不需要文檔,只有看不懂程序的笨蛋才用文檔。
(7) 真正的程序員認為自己比用戶更明白用戶需要什麼。
(8) 真正的程序員不接受團隊開發的理念,除非他自己是頭頭。
(9) 真正的程序員的程序不會在第一次就正確運行,但是他們願意守著機器進行若干個
30 小時的調試改錯。
(10) 真正的程序員不會在上午9:00 到下午5:00 之間工作,如果你看到他在上午9:00 工
作,這表明他從昨晚一直干到現在。
……
具備上述特徵越多,越顯得水平高,資格老。所以別奇怪,程序員的很多缺點竟然
可以被當作優點來欣賞。就象在武俠小說中,那些獨來獨往、不受約束且帶點邪氣的高
手最令人崇拜。我曾經也這樣信奉,並且希望自己成為那樣的「真正」的程序員,結果
沒有得到好下場。
我從讀大學到博士畢業十年來一直勤奮好學,累計編寫了數十萬行C++/C 代碼。有
這樣的苦勞和疲勞,我應該稱得上是編程老手了吧?
我開發的軟體都與科研相關(集成電路CAD 和3D 圖形學領域),動輒數萬行程序,
技術復雜,難度頗高。這些軟體頻頻獲獎,有一個軟體獲得首屆中國大學生電腦大賽軟
高質量C++/C 編程指南,v 1.0
2001 Page 7 of 101
件展示一等獎。在1995 年開發的一套圖形軟體庫到2000 年還有人買。羅列出這些「業
績」,可以說明我算得上是編程高手了吧?
可惜這種個人感覺不等於事實。
讀博期間我曾用一年時間開發了一個近10 萬行C++代碼的3D 圖形軟體產品,我內
心得意表面謙虛地向一位真正的軟體高手請教。他雖然從未涉足過3D 圖形領域,卻在
幾十分鍾內指出該軟體多處重大設計錯誤。讓人感覺那套軟體是用紙糊的華麗衣服,扯
一下掉一塊,戳一下破個洞。我目瞪口呆地意識到這套軟體毫無實用價值,一年的心血
白化了,並且害死了自己的軟體公司。
人的頓悟通常發生在最心痛的時刻,在沮喪和心痛之後,我作了深刻反省,「面壁」
半年,重新溫習軟體設計的基礎知識。補修「內功」之後,又覺得腰板硬了起來。博士
畢業前半年,我曾到微軟中國研究院找工作,接受微軟公司一位資深軟體工程師的面試。
他讓我寫函數strcpy 的代碼。
太容易了吧?
錯!
這么一個小不點的函數,他從三個方面考查:
(1)編程風格;
(2)出錯處理;
(3)演算法復雜度分析(用於提高性能)。
在大學里從來沒有人如此嚴格地考查過我的程序。我化了半個小時,修改了數次,
他還不盡滿意,讓我回家好好琢磨。我精神抖擻地進「考場」,大汗淋漓地出「考場」。
這「高手」當得也太窩囊了。我又好好地反省了一次。
我把反省後的心得體會寫成文章放在網上傳閱,引起了不少軟體開發人員的共鳴。
我因此有幸和國產大型IT 企業如華為、上海貝爾、中興等公司的同志們廣泛交流。大家
認為提高質量與生產率是軟體工程要解決的核心問題。高質量程序設計是非常重要的環
節,畢竟軟體是靠編程來實現的。
我們心目中的老手們和高手們能否編寫出高質量的程序來?
不見得都能!
就我的經歷與閱歷來看,國內大學的計算機教育壓根就沒有灌輸高質量程序設計的
觀念,教師們和學生們也很少自覺關心軟體的質量。勤奮好學的程序員長期在低質量的
程序堆中滾爬,吃盡苦頭之後才有一些心得體會,長進極慢,我就是一例。
現在國內IT 企業擁有學士、碩士、博士文憑的軟體開發人員比比皆是,但他們在接
受大學教育時就「先天不足」,豈能一到企業就突然實現質的飛躍。試問有多少軟體開發
人員對正確性、健壯性、可靠性、效率、易用性、可讀性(可理解性)、可擴展性、可復
用性、兼容性、可移植性等質量屬性了如指掌?並且能在實踐中運用自如?。「高質量」
可不是幹活小心點就能實現的!
高質量C++/C 編程指南,v 1.0
2001 Page 8 of 101
我們有充分的理由疑慮:
(1)編程老手可能會長期用隱含錯誤的方式編程(習慣成自然),發現毛病後都不願相
信那是真的!
(2)編程高手可以在某一領域寫出極有水平的代碼,但未必能從全局把握軟體質量的方
方面面。
事實證明如此。我到上海貝爾工作一年來,陸續面試或測試過近百名「新」「老」程
序員的編程技能,質量合格率大約是10%。很少有人能夠寫出完全符合質量要求的if
語句,很多程序員對指針、內存管理一知半解,……。
領導們不敢相信這是真的。我做過現場試驗:有一次部門新進14 名碩士生,在開歡
迎會之前對他們進行「C++/C 編程技能」摸底考試。我問大家試題難不難?所有的人都
回答不難。結果沒有一個人及格,有半數人得零分。競爭對手公司的朋友們也做過試驗,
同樣一敗塗地。
真的不是我「心狠手辣」或者要求過高,而是很多軟體開發人員對自己的要求不夠
高。
要知道華為、上海貝爾、中興等公司的員工素質在國內IT 企業中是比較前列的,倘
若他們的編程質量都如此差的話,我們怎麼敢期望中小公司拿出高質量的軟體呢?連程
序都編不好,還談什麼振興民族軟體產業,豈不胡扯。
我打算定義編程老手和編程高手,請您別見笑。
定義1:能長期穩定地編寫出高質量程序的程序員稱為編程老手。
定義2:能長期穩定地編寫出高難度、高質量程序的程序員稱為編程高手。
根據上述定義,馬上得到第一推論:我既不是高手也算不上是老手。
在寫此書前,我閱讀了不少程序設計方面的英文著作,越看越羞慚。因為發現自己
連編程基本技能都未能全面掌握,頂多算是二流水平,還好意思談什麼老手和高手。希
望和我一樣在國內土生土長的程序員朋友們能夠做到:
(1)知錯就改;
(2)經常溫故而知新;
(3)堅持學習,天天向上。
⑨ 如何使用C語言來編寫MSP430的高質量代碼
微處理器一般用於特定環境和特定用途,出於成本、功耗和體積的考慮,一般都要求盡量節省使用資源,並且,由於微處理器硬體一般都不支持有符號數、浮點數的運算,且運算位有限,因此,分配變數時必須仔細。另外要說明的是,速度和存儲器的消耗經常是2個不可兼顧的目標,在多數情況下,編程者必須根據實際情況作出權衡和取捨。
需要注意的事項如下:
1) 通常在滿足運算需求的前提下,盡量選擇為變數定義位元組少的數據類型。
比如最常用的int和char,int是16位的,char是8位的,如果沒有必要,不要使用int,而且使用char也最好使用unsigned char。運行時,可以在變數窗口看到,使用類型為unsigned char的變數是16進制的格式,而使用int的是十進制格式,如果char沒有定義為unsigned,會出現負號,如果沒有必要的話,在430中是不需要負數的。
2) 盡量不用過長的數據類型,如long、long long和double
3) MSP430的C編譯器不支持位定址,所以運算中盡量減少位操作,對於只有「是」和「否」的變數,如果RAM容量允許,則可分配為unsigned char類型,可提高運算速度。如果分配為某位元組的某個位,可以減少存儲器的消耗,但是會降低運算速度
4) 避免使用浮點數,盡量使用定點數進行小數運算。如果必須使用浮點數,則盡量用32位的float,而不是64位的double
5) 盡量將變數分配為無符號數據類型
6) 對於指針變數,如果聲明後其值不再改變,則聲明為const類型,這樣編譯器編譯時能更好的優化生成的代碼
7) 盡可能的使用局部變數而非全局變數或者靜態變數(static)。這樣有利於編譯器編譯時更好的優化生成的代碼
8)避免對局部變數使用 &取地址符。因為這樣會使編譯器無法把此變數放在CPU的寄存器中,而是放在RAM中,從而失去了優化的機會
9) 僅在模塊內使用的變數聲明為static,有利於優化代碼
10) 如果堆棧空間有限,盡量減少函數調用的層次和遞歸調用
11) 如果傳送參數過多,可將參數組成一個數組或者結構體,然後用指針傳遞
12) 某些變數在中斷程序和普通級別程序中都會被用到,所以必須加以保護。
將變數聲明為volatile類型,編譯器優化時就不會移動它,對它的訪問不會被延遲。
為保證對volatile的變數不被打斷,為此,可以在訪問它的部分(即訪問它的函數)前面加上__moniter的聲明
⑩ 《c語言入門經典》與《高質量程序設計指南》哪個寫得好
如果感覺亂的話,說明知識沒有梳理好,建議看看基礎的,先別看中質量,因此推薦《c語言入門經典》