⑴ 初學者學習c語言用什麼編程軟體好
1.Dev-C++:這是Windows平台下一個免費、輕量級的C/C++集成開發環境,基本功能和早期的VC++6.0非常相似,自帶有GCC、GDB等編譯調試工具,因為沒有任何自動補全、語法檢查和提示的功能,所以對於初學者來說非常鍛煉基本功,在許多學校中都作為教學軟體使用:
2.Code::Blocks:這也是一個輕量級的C/C++開發環境,免費、開源、跨平台,相比較Dev-C++比較單一的功能來說,支持自動補全、語法提示和語法檢查,除此之外,還自帶有許多現成的工程模板,可以快速開發GUI、Qt、OpenGL等應用,插件擴展也比較豐富,對於初學者來說,也是一個非常不錯的選擇
3.Visual Studio:這應該是Windows平台下使用最多的C/C++開發環境了,專業重量級的,由微軟自主設計研發,號稱宇宙第一IDE,插件擴展眾多,支持單元測試、代碼重構等高級功能,開發調試效率都非常高,因此在大型項目開發中經常會用到這個軟體,雖然對於初學者來說,早期不容易學習和掌握,但熟悉後,的確是一個編程開發利器
4.Vim:這個是Linux環境下使用比較多的代碼編輯器,嚴格意義上說不是一個C語言開發軟體,但安裝GCC、GDB等工具後,也是一個非常不錯的C語言編程軟體,插件擴展眾多,佔用內存少,輕便靈活:
⑵ c語言是有什麼
想成為編程高手,那就耐心把以下文章看完!
一、為何要學編程?
每個人的動機不一樣。大致有:
1、為了找個好工作;或為了有更好的機會和更好的發展。
2、看到別人超厲害,所以也想學。
3、實際工作中很多場合需要。
4、從小就立志做個程序員,做軟體工程師。
5、振興中國的軟體事業。
。。。。。。
================================================
二、如何學編程?
1、多看好書。
差書誤人子弟,不但浪費時間和精力,而且打擊人的信心,差書使人很久都不會,讓會讓人懷疑自已的學習能力。
現在的書很多,但好書很少,特別是被大家公認很有價值的好書,更是少之又少。歷經多年時間考驗和市場風雨不殘酷洗禮而僅存的巨著,更是極其稀少。中國歷史上文學小說類書本多如牛毛,但僅存的巨著,也只不過<<紅樓夢>>等四本名著而已,編程方面也是如此。
2、多動手。
這一點很重要。而且特別重要。「紙上得來終覺淺,絕知此事要躬行。」陸游的千古名句說的就是這個道理,並且同樣適合於編程方面。
================================================
三、用什麼語言最好?
這主要取決於應用領域,每種語言都有自已的長處和不足。
1、匯編語言和C語言在單片機及工控領域用較多。另外C語言也是一種通用語言,是學C++/c#的起點。
2、C++系統編程等多個方面,最常用的編譯器是VC。
3、C#/java網路編程方面新興的。
4、VB通用。
5、還有Delphi等。。。。。。
個人建議:從未編過程的,就從學vb開始。有基礎的可直接學c++/VC。
===================================================
四、有什麼好書?
幾年前,台灣著名技術作家侯捷先生曾經寫過一篇影響很大的書評文章,叫做《MFC四大天王》。文章的意思是說在MFC的浩瀚書海中,只要認真研讀和學習其中四本,就可以「五嶽歸來不看山」。侯先生雖以MFC為例,但是這個道理卻同樣適合於MFC之外的很多具體技術領域,這不能不說是一個有趣的統計現象。
通常在某一個具體細分的技術領域,會自然而然地出現3-5本頂級著作,它們彼此互相配合,形成一個完整的體系。對於學習者來說,只需要認真研讀這幾本書,就足以升堂入室。我樂於將這種現稱為「四書五經現象」。對於讀者來說,如果能夠找到該領域中的「四書五經」,則無論在時間上還是金錢上都是最經濟的選擇。好書幾本,勝過爛書幾捆,這個體會想必大家都有。在此,幫助大家遴選各個技術領域里的「四書五經」。
編程的書可謂汗牛充棟,其中經典也是不泛其數,但絕大多數的過來人,都一致認為,要想很快的入門並盡快的投入到編程實踐中,只要其中的四到五本也就夠了,即只看經典中的經典,聖經級的書就可以了。
所謂活到老學到老,程序員是個終身學習的職業,要不斷的看書,直到放棄編程的那一天。所以,您要讀的好書也絕非以下推薦的這些書喲,呵呵。
一句話,由於我們的時間、精力、金錢都是有限的,如何以最小的代價換得最大的收獲。
================================================================
五、經典好書分類熱銷榜
1、java
java編程語言(第三版)---java四大名著----James Gosling(java之父)
java編程思想(第2版)----java四大名著----Bruce Eckel
java編程思想(第3版)----java四大名著----------------Bruce Eckel
java 2核心技術 卷I:基礎知識(原書第7版)---java四大名著-----Cay Horstmann
java 2核心技術 卷II:高級特性(原書第7版)----java四大名著-----Cay Horstmann
Effective java中文版------java四大名著--------Joshua Bloch
精通Struts:基於MVC的java Web設計與開發---孫衛琴
精通Hibernate:java對象持久化技術詳解---孫衛琴
Tomcat與java Web開發技術詳解------------孫衛琴
java與模式------------------------------閻宏
2、c#
C#程序設計-------Charles Petzold「windows編程泰山北斗」---C#語言「倚天屠龍雙劍」
C# Primer中文版--------Stanley B.Lippman---C#語言「倚天屠龍雙劍」
.NET框架程序設計(修訂版)--------Jeffrey Richter「windows編程泰山北斗」---.NET平台四大天王
C# Windows程序設計----------Charles Petzold「windows編程泰山北斗」------.NET平台四大天王
.NET程序設計技術內幕-------------Jeff Prosise---.NET平台四大天王
.NET本質論--第1卷:公共語言運行庫(中文版)--------Chris Sells---.NET平台四大天王
3、C++
C++程序設計語言(特別版)---c++八大金剛----Bjarne Stroustrup「C++之父」
C++ Primer (第3版)中文版----c++八大金剛---Stanley B.Lippman
C++ Primer (第4版)中文版----c++八大金剛---Stanley B.Lippman
C++標准程序庫—自修教程與參考手冊--c++八大金剛--Nicolai M.Josuttis
C++語言的設計和演化-----c++八大金剛----Bjarne Stroustrup「C++之父」
深度探索C++對象模型---c++八大金剛----Stanley B.Lippman
Essential C++中文版---c++八大金剛---Stanley B.Lippman
Effective C++中文版 2nd Edition-----c++八大金剛------Scott Meyers
More Effective C++中文版----c++八大金剛------Scott Meyers
C++編程思想(第2版) 第1卷:標准C++導引--------Bruce Eckel
C++編程思想(第2版)第2卷:實用編程技術 --------Bruce Eckel
C++程序設計--------------------------譚浩強
C++ 程序設計教程(第2版)--------------錢能
C++ Primer Plus(第五版)中文版---Stephen Prata
廣博如四庫全書The c++ programming language、c++ Primer
深奧如山重水復Inside the c++ object model
程序庫大全The c++ standard libray
工程經驗之積累Effective c++、More Effective c++、Exceptional c++
c++八大金剛:
1、Essentital c++---lippman---C++之父,旁枝暫略,主攻核心,輕薄短小,初學者
2、The c++ programming language----C++之父,技術權威,用詞深峻,思想深遠,c++網路全書代表,聖經。
3、c++ Primer----lippman---縱橫書市十數年,c++最佳教本,c++網路全書代表。
4、Inside the c++ object model-----lippman----揭示c++底層,非常好,非常難。
5、Effective c++-----通過50個編程實例,展示專家經驗,行文有趣,深處淺出。
6、More Effective c++----通過35個編程實例,展示專家經驗,行文有趣,深處淺出。
7、The c++ standard libray---c++標准庫的網路全書。
8、設計模式:可復用面向對象軟體的基礎------good!
4、c
C程序設計語言(第2版·新版)---C語言「倚天屠龍雙劍」---Brian W.Kernighan「C語言之父」
C Primer Plus中文版(第五版)--------C語言「倚天屠龍雙劍」---Stephen Prata
C程序設計(第三版)---------------------------譚浩強
C語言大全(第四版)---------------------------HERBERT SCHILDT
C語言介面與實現:創建可重用軟體的技術-------------DAVID R.HANSON
C語言參考手冊(原書第5版)--------------------------Samuel P.Harbison
C程序設計教程---------------------------------H.M.Deitel/P.J.Deitel
C陷阱與缺陷-----------------------------------Andrew Koenig
5、VB
Visual Basic .NET技術內幕-----VB編程三劍客-----------Francesco Balena「vb首席大師」
Windows程序設計-Visual Basic.NET語言描述--VB編程三劍客-----Charles Petzold「windows編程泰山北斗」---
.NET框架程序設計:Visual Basic.NET語言描述--VB編程三劍客--Jeffrey Richter「windows編程泰山北斗」---
Visual Basic 6編程技術大全------------------------Francesco Balena「vb首席大師」
Visual Basic.NET 從入門到精通-------------------------Petroutsos,E.
高級VISUAL BASIC編程-----------------------------------MATTHEW CURLAND
6、Delphi
Inside VCL(深入核心——VCL架構剖析)----------李維
Delphi 7高效資料庫程序設計--------------李維
面向對象開發實踐之路(Delphi版)----------李維
7、VC
Windows 程序設計(第5版)-----Charles Petzold「windows編程泰山北斗」---
Windows核心編程----------Jeffrey Richter「windows編程泰山北斗」---
Windows高級編程指南---------Jeffrey Richter「windows編程泰山北斗」---
深入淺出MFC(第二版)-----「MFC四大天王」-------侯捷
MFC Windows程序設計(第2版)---MFC四大天王」---------Jeff Prosise
Visual C++ 技術內幕(第4版)--MFC四大天王」--------David Kruglinski
深入解析MFC-------------MFC四大天王」-----------George Shepherd
Visual C++.NET 技術內幕(第6版)-MFC四大天王」------------David Kruglinski
8、vf
Visual Foxpro程序設計參考手冊-------------------張洪舉
專家門診——Visual FoxPro開發答疑160問-------------------張洪舉
Visual FoxPro 6.0/9.0解決方案與範例大全-------------------張洪舉
Visual FoxPro軟體開發模式與應用案例-------------------張洪舉
9、黑客
應用密碼學(協議演算法與C源程序-----------Bruce Schneier
網路信息安全的真相-----------Bruce Schneier
黑客大曝光:網路安全機密與解決方案(第5版)--------STUART MCCLURE
軟體加密技術內幕------------看雪學院
加密與解密——軟體保護技術與完全解決方案------------看雪學院
加密與解密(第二版)--------段鋼
10、匯編
Intel微處理器結構、編程與介面(第六版)---------Barry B. Brey
80*86、奔騰機匯編語言程序設計---------Barry B. Brey
Windows環境下32位匯編語言程序設計(第2版)-----------羅雲彬
IBM-PC匯編語言程序設計(第2版) 本書是國內優秀教材--------沈美明 溫冬嬋
IBM PC匯編語言程序設計(第五版) 這本書籍是國外優秀教材-------PETER ABEL著,沈美明 溫冬蟬譯
11、驅動開發
Windows WDM設備驅動程序開發指南------------------------------------ Chris Cant
Windows 2000/XP WDM設備驅動程序開發(第2版)--------------------------武安河
WINDOWS 2000/XP WDM設備驅動程序開發-------------------------------- 武安河
12、網路
計算機網路第四版中文版----網路編程三劍客--------------Andrew S.Tanenbaum
TCP/IP詳解3卷本--------------------Richard Stevens----網路編程三劍客
UNIX網路編程2卷本--------------------Richard Stevens----網路編程三劍客
用TCP/IP進行網際互聯-----------Douglas E. Comer
高級TCP/IP編程-------------------Jon C. Snader
C++網路編程-----------------------Douglas Schmidt
UNIX環境高級編程(第2版)--------------------Richard Stevens
13、演算法
計算機程序設計藝術-------Donald.E.Knuth----------演算法「倚天屠龍」雙劍
演算法導論-----------------Thomas H. Cormen--------演算法「倚天屠龍」雙劍
離散數學及其應用----------Kenneth H.Rosen
具體數學—計算機科學基礎--------Donald.E.Knuth
14、圖形編程
Windows 圖形編程----------------FENG YUAN --圖形編程界的Charles Petzold之書
15、數據結構
數據結構 C++語言描述》58.00(Data Structures C++) William Ford,William Topp 劉衛東 沈官林
數據結構演算法與應用-C++語言描述》49.00Sartej Sahni 汪詩林 孫曉東等機械工業出版社
16、軟體工程
設計模式--可復用面向對象軟體的基礎
重構—改善既有代碼的設計
17、操作系統
深入理解計算機系統(修訂版)-------RANDAL E.BRYANT
18、Unix
UNIX 網路編程 卷I 套接字聯網API(英文版 第三版
UNIX 編程藝術
UNIX環境高級編程(英文影印第2版-----UNIX編程「聖經
UNIX環境高級編程(英文影印版)(第2版)
UNIX環境高級編程(第2版)
UNIX環境高級編程(第2版)---UNIX編程「聖經
UNIX網路編程 第1卷:套介面API(第3版)
UNIX網路編程卷2:進程間通信(第2版)(英文影印版)
UNIX 網路編程(第二版)第2卷:進程間通信
UNIX編程環境
UNIX 網路編程 卷I 套接字聯網API(英文版 第三版
UNIX系統編程
UNIX環境高級編程
UNIX 網路編程 卷I 套接字聯網API(英文版 第三版)
UNIX網路編程 第1卷:套介面API(第3版)
UNIX 網路編程(第二版)第2卷:進程間通信
UNIX網路編程卷2:進程間通信(第2版)(英文影印版)
UNIX 網路編程(第2版)第1卷:套介面API和X/Open 傳輸介面API
UNIX網路編程(卷1):連網的APLS:套接字與XTI(第二版)(英文影印版)
UNIX環境高級編程
Unix技術手冊
19、Linux
Linux內核設計與實現
Linux內核完全注釋
LINUX內核分析及編程
GNU/Linux 編程指南(第二版)
Linux設備驅動程序(第三版)
嵌入式設計及Linux驅動開發指南——基於ARM 9處理器
Linux設備驅動程序 第三版(英文影印版)
Linux內核設計與實現(第2版)
Linux內核設計與實現(英文影印版)(第2版)
linux技術手冊
20、游戲編程
Windows游戲編程大師技巧(第二版
游戲之旅--我的編程感悟
OpenGL超級寶典:第三版
OpenGL編程指南(第四版)
java 游戲高級編程
J2ME手機游戲編程入門
游戲之旅——我的編程感悟
游戲開發中的人工智慧(英文影印版)
3D游戲:卷2 動畫與高級實時渲染技術
面向對象的游戲開發
java 游戲高級編程
3D游戲編程大師技巧
游戲編程精粹
面向對象的游戲開發
3D游戲 卷1:實時渲染與軟體技術
3D游戲:卷2 動畫與高級實時渲染技…
J2ME手機游戲編程入門
Direct3D游戲編程入門教程(第二版…
21、移動開發
Windows Mobile手機應用開發
SYMBIAN OS C++手機應用開發
Windows Mobile手機應用開發--傅曦 齊宇 徐駿
SYMBIAN OS C++手機應用開發 (第2卷)------------------RICHARD HARRISON著,周良忠 王伯欣譯
SYMBIAN OS C++手機應用開發---------------RICHARD HARRISON著,周良忠譯
Windows CE.net內核定製及應用程序開發---------周毓林 寧楊 陸貴強 付林林
嵌入式系統Windows CE 開發技巧與實例--傅曦
Palm OS編程實踐---絕版
22、單片機
單片機輕松入門----------------------------------周堅(平凡老師)
單片機典型模塊設計實例導航-----------------------求是科技
例說8051----------------------------------------張義和 陳敵北
KEIL CX51 V7.0單片機高級語言編程與ΜVISION2應用實踐-----徐愛鈞
單片機應用程序設計技術(修訂版)--------------------周航慈
8051單片機實踐與應用-------------------------------吳金戎
MCS-51系列單片機實用介面技術---------------------李華
23、串並口通訊
Visual C++/Turbo C串口通信編程實踐------------------龔建偉
VISUAL BASIC與RS-232串列通信控制(最新版)----------范逸之
24、電子
無線電識圖與電路故障分析輕松入門(第二版) -------------------胡斌
無線電元器件檢測與修理技術輕松入門(第二版) -------------------胡斌
圖表細說電子技術識圖-------------------胡斌
圖表細說電子元器件-------------------胡斌
圖表細說元器件及實用電路-------------------胡斌
================================================================
六、怎樣成為一名程序員
通過以下4個階段的訓練, 沒有任何編程基礎人就可以成為一名普通的程序員。
第一階段:掌握一種編程語言
學習內容:學習任意一種主流的編程語言。例如C++語言。
學習目標:熟練掌握一種語言的語法和基本的編程技巧。
學習時間:3個月左右
注意事項:編程語言和編程工具是兩回事情,編程語言是指C++、Basic、Object Pascal等程序設計語言,它們是像漢語、英語一樣的抽象的語法規則,編程工具是指Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代碼編輯器、程序編譯器在內的集成化、可視化的軟體開發工具。C++源程序可以在Visual C++ 6.0里編寫,也可以在記事本里編寫,而同一個C++源程序可以用Visual C++ 6.0編譯、執行,也可以用C++ Builder 5.0 編譯、執行,所以: C++ 不等於 Visual C++ 6.0
第二階段:掌握一種編程工具
學習內容:學習任意一種主流的編程工具。注意編程工具要和第一階段學習的編程語言一致,例如你學習的編程語言是C++,那麼編程工具要選Visual C++ 6.0或者C++ Builder 5.0。
學習目標:熟練掌握這種編程工具基本用法,例如:菜單、組件、程序跟蹤調試、編寫Windows程序等。
學習時間:3個月左右
注意事項:這個階段側重編程工具的使用,同時進一步熟習編程語言,最後達到能熟練編寫各種基本的Windows程序。
第三階段:掌握「演算法與數據結構」這門課程
學習內容:演算法與數據結構,推薦許卓群的《數據結構》,高等教育出版社出版。
學習目標:熟練掌握各種常用的演算法與數據結構
學習時間:4個月左右
注意事項:這是一門不可或缺的軟體開發課程,曾經有一本經典計算機專業書籍叫做《數據結構+演算法=程序》,這說明了數據結構和演算法的重要性。它能幫我們建立良好的程序分析與設計能力。
第四階段:實現一個模擬的小型軟體項目
學習內容:軟體項目的開發過程
學習目標:掌握軟體項目的基本開發過程和方法
學習時間:4個月左右
注意事項:自己完成一個模擬的小型軟體項目,強烈推薦做一個MIS(管理信息系統)軟體,參考用書推薦「中小型信息管理系統開發實例系列叢書」,人民郵電出版社,它的例子詳實有效,以它為基礎再加以擴展,就可以做出實用的MIS軟體來。此叢書包括多種開發工具,大家可以選擇適合自己的:《VISUAL FOXPRO6.0 資料庫系統開發實例導航》 《java資料庫系統開發實例導航》 《VISUAL BASIC資料庫系統開發實例導航》《VISUAL C++6.0資料庫系統開發實例導航》 《ASP.NET資料庫管理系統開發實例導航》 《DELPHI資料庫系統開發實例導航》《POWERBUILDER 8.0資料庫系統開發實例導航》。
最後將完成的模擬軟體刻成光碟,作為自己的作品去面試,以此踏上自己光輝的職業程序員之路!
⑶ c語言重構是什麼意思,能舉一個具體的例子嗎,他和重構有什麼區別啊
親,你說的是函數重載吧?
重構是指代碼重構,就是重新寫代碼,因為前面寫過一次,所以再寫的時候可能會有更好的想法,就像做作業檢查一樣。
函數重載是指函數名一樣,參數不一樣,即為函數重載:
int func(int a){....},int func(char *p){....}和int func(int *p){....}都是它的重載函數
不知道你明白沒有
⑷ 如何用 Vim 重構代碼
當然,客觀地說,在 Vim 里重構代碼,是非常艱巨的任務。因為Vim的工具鏈更偏重於靜態分析,文本分析。而對於好的重構工具,他需要一定的語義分析能力,並且不同的編程語言也會面臨不一樣的挑戰。簡單的說,靜態語言重構相對動態語言而言要輕松一些。
一般我會通過 exVim 中的 \gg 或者 :GS <name> 指令來完成重構中的檢索操作。在通過 :GS 全局查找需要重構的 類名,變數名等信息後,我會在 exGlobalSearch 插件中進行一些必要的過濾操作,比如如果我希望檢索出所有調用 func_name 的地方,在 C++ 中,我會加入檢索過濾 ->func_name 並在 exGlobalSearch 中做第二次過濾查找。
在完成檢索結果後,就是比較麻煩的替換操作。在 exVim 中,可以對 exGlobalSearch 中的查找結果做全局替換,通過指令 :SUB name1/name2/option 。這個指令和 Vim 中的 :s/name1/name2/opt 格式是一樣,只不過他做的事情是對每一條 exGlobalSearch 中過濾出得檢索結果做一次 Vim 的 :s 操作。
當然,由於執行的是文本替換,我個人並不是非常放心替換結果,所以,每次完成名字替換的重構操作後,我還會根據 exGlobalSearch 的檢索條目,一一檢查替換結果。
誠然Vim不是重構利器,但是在做諸如以上的文本操作時,工作量還是屬於可控的。對於靜態語言編程,這樣的方法已經足夠,如果是C語言編程,更有cscope這樣的靜態分析利器(對應exVim的 exCscope) 來幫助重構和代碼分析。
讓我比較迷茫的是動態語言(Lua, Javascript)的重構過程,目前我並沒有特別好的方法。
⑸ 華為c語言編程規范是怎樣的
代碼總體原則
清晰第一。清晰性是易於維護、易於重構的程序必須具備的特徵。
簡潔為美。簡介就是易於理解並且易於實現。
選擇合適的風格,與源代碼風格保持一致。
頭文件
頭文件的設計體現了大部分的系統設計,不合理的頭文件布局是編譯時間過長的根因,實際上是不合理的設計。
頭文件中適合放置介面的聲明,不適合放置實現。
頭文件應當職責單一。
頭文件應向穩定的方向包含。
每一個.c文件應有一個同名的.h文件,用於聲明需要對外公開的介面。
禁止頭文件循環依賴。
禁止包含用不到的頭文件。
頭文件應當自包含。
編寫內部#include保護符(#define保護)。
禁止在頭文件中定義變數。
只能通過包含頭文件的方式使用其他C提供的介面,禁止在C中通過extern的方式使用外部函數介面和變數。
禁止在extern "C"中包含頭文件。
函數
函數設計的精髓:編寫整潔函數,同事把代碼有效組織起來。
一個函數僅完成一個功能。
重復代碼應該盡可能提煉成函數。
避免函數過長,新增函數不超過50行。
避免函數的代碼塊嵌套過深,新增函數的代碼塊嵌套不超過4層。
可重入函數應避免使用共享變數;若需要使用,則應該通過互斥手段對其加以保護。
對參數的合法性檢查,由調用者負責還是介面函數負責,應在項目組模塊內統一規定。預設由調用者負責。
對函數的錯誤返回碼要全面處理。
設計高扇入,合理扇出(小於7)的函數。扇出是指調用其它函數的數目。扇入是指有多少上級函數調用它。
廢棄代碼要及時清除。
函數參數不變使用const限定。
函數應避免使用全局變數、靜態局部變數和I/O操作,不可避免的地方應集中使用。
檢查函數所有非參數輸入的有效性,如數據文件、公共變數等。
函數的參數個數不超過5個。
在源文件范圍內聲明和定義的所有函數,除非外部可見,否則應該加static關鍵字。
標識符
標識符的命名要清晰、明了,有明確含義,同時使用完整的單詞或大家基本可以理解的縮寫,避免使人產生誤解。
產品、項目組內應保持同意的命名分格。
盡量避免名字中出現數字編號,除非邏輯上確實需要。
重構、修改部分代碼時,應該保持和原有代碼風格一致。
文件命令統一採用小寫字元。因為不同系統對文件名大小寫處理會有不同(windows不區分大小寫,但是linux系統則區分)。
全局變數應增加「g_」前綴。
靜態變數應增加「s_」前綴。
禁止使用單位元組命名變數,但是允許定義i,j,k作為局部循環變數。
不建議使用匈牙利命名法。
對於數值或者字元串常量的定義,建議採用全大寫字母,單詞之間加下劃線的方式命名。
變數
結構功能單一,不要設計面面俱到的數據結構。
不用或者少用全局變數
防止局部變數與全局變數同名
通訊過程中使用的機構,必須注意位元組序。
嚴禁使用未經初始化的變數作為右值。
使用面向介面編程思想,通過API訪問數據。
盡量減少沒有必要的數據類型默認轉換與強制轉換。
宏和常量
用宏定義表達式時,要使用完備的括弧。
將宏定義的多條表達式放在大括弧中。
使用宏時,不允許參數發生變化。
不允許直接使用魔鬼數字。
除非必要,應盡可能使用函數代替宏。
常量建議用const定義代替宏。
質量
時刻注意易混淆的操作符
必須了解編譯系統的內存分配方式,特別是編譯系統對不同類型的變數的內存分配規則,如局部變數在何處分配、靜態變數在何處分配等。
不僅關注介面,同樣要關注實現。
禁止內存操作越界。
禁止內存泄漏。
禁止引用已經釋放的內存空間。
編程時,要防止差1錯誤。
switch語句必須有default分支。
函數中分配的內存,在函數退出之前要釋放。
不要濫用goto語句。
時刻注意表達式是否會上溢、下溢。
程序效率
在保證軟體系統的正確性、簡潔、可維護性、可靠性及可測試性的前提下,提高代碼的效率。
通過對數據結構、程序演算法的優化來提高效率。
將不變條件的計算移到循環體外。
對於多維大數組,避免來回跳躍式訪問數組成員。
創建資源庫,以減少分配對象的開銷。
將多次被調用的「小函數」改為inline函數或者宏實現。
注釋
優秀的代碼可以自我解釋,不通過注釋即可輕易讀懂。
注釋的內容要清楚、明了,含義准確,防止注釋二義性。
修改代碼時,維護代碼周邊的所有注釋,以保證注釋與代碼的一致性。不再有用的注釋要刪除。
文件頭部應進行注釋,注釋需要列出:版權說明、版本號、生成日期、作者姓名、工號、內容、功能說明、與其他文件的關系、修改日誌等,頭文件的注釋中還應有函數功能的說明。
函數聲明處注釋描述函數功能、性能及用法,包括輸入和輸出參數、函數返回值、可重入的要求等;定義處詳細描述函數功能和實現要點,如實現的簡要步驟、實現的理由、設計約束等。
全局變數要有詳細的注釋,包括對其功能、取值范圍以及存取時注意事項等的說明。
盡量採用工具可以識別的格式注釋。
排版與格式
程序塊採用縮進風格編寫,每級縮進為4個空格。
相對獨立的程序塊之間、變數說明之後必須加空行。
一行只寫一條語句。
對等操作兩邊加空格,注釋符與內容之間加空格。
編譯
使用編譯器的最高告警級別,理解所有的告警,通過修改代碼而不是降低告警級別來消除所有告警。
在產品軟體中,要統一編譯開關、靜態檢查選項以及相應告警清除策略。
可測性
模塊劃分清晰,介面明確,耦合性小,有明確輸入和輸出,否則單元測試實施困難。
在統一項目組或產品組內,調測列印的日誌要有統一的規定。
使用斷言記錄內部假設。
不能用斷言來檢查運行時錯誤。
⑹ c語言是幹嘛的
C語言是用來編寫系統的。
最開始,人們手裡除了機器碼就是匯編,沒有別的語言。但是匯編有很多硬體相關的特性,可移植性差。貝爾實驗室要解決這一問題,就研發了C語言。
C語言可以跨平台,一份代碼,配上不同的編譯器就可以在各大電腦上運行。除此之外,C語言效率驚人,在某些情況中,如果匯編水平中等以下,編出來的匯編甚至沒有C語言生成的機器碼快。
現在,NOIP(現更名為CSP-J和CSP-S)僅允許初賽和復賽使用三種語言:Pascal、C、C++,C語言的重要性不言而喻。
雖然邁入了互聯網時代,但是C語言的地位也沒有低到可以忽略。C語言在對空間和時間要求較高的設備(如嵌入式設備)中發揮著重要功能,也可以編寫各大語言的編譯器,有著比較重要的地位。
⑺ 試用C語言實現一個2維矩陣(float類型)
**B, int **C, int m, int p, int n)
{
for (int i = 0; i < m; i++)
{
for (int j = 0; j < p; j++)
{
C[i][j] = 0;
for (int k = 0; k < n; k++)
{
C[i][j] += A[i][k] * B[k][j];
}
}
}
}
⑻ c語言初學者用vs還是vscode
c語言初學者用使用vs。是Windows平台下最常用的C/C++開發環境了。 它是職業重量級人物。
它由微軟獨立設計和開發。 它被稱為宇宙中第一個 IDE,並有許多插件擴展。支持單元測試、代碼重構等高級功能,開發調試效率非常高。 因此,該軟體經常用於大型項目的開發。
vs的優勢:
1、強大而靈活的軟體建模。
2、高效的架構指。
3、關鍵測試功能。
4、集成源代碼控制。
⑼ 沒有電腦可以學習「c語言」嗎
沒有電腦可以學習c語言,只是相對抽象,學起來會很吃力,但是也可以學好。
初學C語言的編程者容易在學習前期產生畏懼心理,原因在於學習方法不得當,將學習C語言這件事妖魔化,實質上學習一門編程語言遠沒有一些同學想像的那麼難。
首先,學習C語言需要從C語言的基本內容開始,如C語言的語法,結構化模塊化的編程思想,C語言的三大結構(順序結構,選擇結構,循環結構),都是學習的基礎內容,甚至包括仔細的去研究數據結構,運算符及表達式的構成等都應劃在基本功的范圍內。C語言的使用有幾塊內容是很重要的:數組,指針,函數。這三部分相對來講有些難度,而實質上單獨拿出每一部分來,這三部分都十分好理解和使用,真正難在將這三部分結合起來組成一個靈活,具有通用性的程序,這就需要大家在學習的過程中慢慢積累解決問題的方法了。當前,前提條件,應該靈活的掌握這三部分的基本知識,將第一部分應用自如後,再進行知識點的連接和貫穿。
數組:數組從訪問的效率來看可以說是最快的數據結構了,根據下標值可以真正訪問到數組中的某塊空間,而數組的連續存儲也成為我們編程非常便利的地址使用的條件。
指針:指針可以說是C語言的精華所在,由於指針的存在,所以C語言的語法才能更加緊湊靈活,但是接觸指針初期會覺得這個概念比較抽象,那就需要在程序設計時多將變數地址或指針值列印出來觀察指針的變化特點來理解指針這一概念。
函數:函數部分是結構化模塊化編程的基本理念,函數部分本身不難,難度在於將前面所說數組和指針綜合起來參與傳參,甚至加上函數指針的傳參部分,就顯得有些難以理解,實質上還是基本概念的問題,如果上述知識點都能各個擊破,每個知識點都能掌握其精髓的使用,那函數部分相當於是C語言的一個整合。
最後強調寫程序的重要性,比起讀程序來,寫程序更顯得尤為重要,在學習過程中,一定會有代碼重構這一環節,不斷對之前的代碼用新的方法來進行重構才會有新的收獲,編程經驗就是這樣慢慢積累起來的。