c語言
{
\"code\": 200,
\"title\": \"\",
\"content\": \"C語言是一種計算機程式設計語言。它既具有高級語言的特點,又具有組合語言的特點。它由美國貝爾研究所的D.M.Ritchie於1972年推出。1978後,C語言已先後被移植到大、中、小及微型機上。它可以作為工作係統設計語言,編寫係統應用程式,也可以作為應用程式設計語言,編寫不依賴計算機硬體的應用程式。它的應用範圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,適於編寫係統軟件,三維,二維圖形和動畫。具體應用比如單片機以及嵌入式係統開發。\\n\\n1.一個C語言源程式可以由一個或多個原始檔組成。\\n\\n2.每個原始檔可由一個或多個函數組成。\\n\\n3.一個源程式不論由多少個檔案組成,都有一個且隻能有一個main函數,即主函數。\\n\\n4.源程式中可以有預處理命令(包括include命令、if命令、pragma命令),預處理命令通常應放在原始檔或源程式的最前麵。\\n\\n5.每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括號“}”之後不能加分號。\\n\\n6.標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。\\n\\n特點\\n\\n1.C是高級語言。它把高級語言的基本結構和語句與低級語言的實用性結合起來。C語言可以像組合語言一樣對位、字節和地址進行操作,而這三者是計算機最基本的工作單元。\\n\\n2.C是結構式語言。結構式語言的顯著特點是代碼及數據的分隔化,即程式的各個部分除了必要的資訊交流外彼此獨立。這種結構化方式可使程式層次清晰,便於使用、維護以及調試。C語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程式流向,從而使程式完全結構化。\\n\\n3.C語言功能齊全。具有各種各樣的數據類型,並引入了指針概念,可使程式效率更高。而且計算功能、邏輯判斷功能也比較強大,可以實現決策目的的遊戲。\\n\\n4.C語言適用範圍大。適合於多種操作係統,如Windows、DOS、UNIX等等;也適用於多種機型。\\n\\nC語言對編寫需要硬體進行操作的場合,明顯優於其它高級語言,有一些大型應用軟件也是用C語言編寫的。\\n\\n特色\\n\\n指針是C語言的一大特色,可以說是C語言優於其它高級語言的一個重要原因。就是因為它有指針,可以直接進行靠近硬體的操作,但是C的指針操作不做保護,也給它帶來了很多不安全的因素。C 在這方麵做了改進,在保留了指針操作的同時又增強了安全性,受到了一些用戶的支援,但是,由於這些改進增加語言的複雜度,也為另一部分所詬病。Java則吸取了C 的教訓,取消了指針操作,也取消了C 改進中一些備受爭議的地方,在安全性和適合性方麵均取得良好的效果,但其本身解釋在虛擬機中運行,運行效率低於C \\/C。一般而言,C,C ,java被視為同一係的語言,它們長期占據著程式使用榜的前三名。\\n\\nC語言的強勁之處在於用數學觀點對基於存儲程式原理(storeprogramconcept)的硬體架構進行軟抽象。\\n\\n入門\\n\\n對於一個初學者,MicrosoftVisualC 是一個比較好的軟件。介麵友好,功能強大,調試也很方便。這是微軟出的一個C語言整合開發環境(IDE),主要有:VC 6.0、VS2005.VS2008.VS2010等,分為企業版和學生版等。對於初學者VC 6.0是比較容易上手的,但其對標準支援的不好可能使人養成不良的編程習慣。\\n\\n在unix\\/linux操作係統上,學習c語言一般使用vim\\/emacs來編輯原始檔,使用gcc來編譯原始檔,使用make程式來管理編譯過程。\\n\\n其他編譯器如CodeBlocks10.05(跨平台linux\\/windows開源免費支援高達29種不同的項目)、dev-c (開源免費)、turbo、c-free5.0、codelite(開源免費)、eclipse(開源免費基於Java擴展平台)……\\n\\n曆史\\n\\nC語言的祖先是BCPL語言。\\n\\n1967年,劍橋大學的MartinRichards對CPL語言進行了簡化,於是產生了BCPL(BasicCombinedPogrammingLanguage)語言。\\n\\n1970年,美國貝爾實驗室的KenThompson。以BCPL語言為基礎,設計出很簡單且很接近硬體的B語言(取BCPL的首字母)。並且他用B語言寫了第一個UNIX操作係統。\\n\\n在1972年,美國貝爾實驗室的D.M.Ritchie在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。\\n\\n為了使UNIX操作係統推廣,1977年DennisM.Ritchie發表了不依賴於具體機器係統的C語言編譯文字《可移植的C語言編譯程式》。\\n\\n1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchie合著了著名的《TheCProgrammingLanguage》一書。通常簡稱為《K&R》,也有人稱之為《K&R》標準。但是,在《K&R》中並冇有定義一個完整的標準C語言,後來由美國國家標準化協會(AmericanNationalStandardsInstitute)在此基礎上製定了一個C語言標準,於一九八三年發表。通常稱之為ANSIC。\\n\\nK&R第一版在很多語言細節上也不夠精確,對於pcc這個“參照編譯器”來說,它日益顯得不切實際;K&R甚至冇有很好表達它所要描述的語言,把後續擴展扔到了一邊。最後,C在早期項目中的使用受商業和政府合同支配,它意味著一個認可的正式標準是重要的。因此(在M.D.McIlroy的催促下),ANSI於1983年夏天,在CBEMA的領導下建立了X3J11委員會,目的是產生一個C標準。X3J11在1989年末提出了一個他們的報告[ANSI89],後來這個標準被ISO接受為ISO\\/IEC9899-1990。\\n\\n1990年,國際標準化組織ISO(InternationalOrganizationforStandards)接受了89ANSIC為ISOC的標準(ISO9899-1990)。1994年,ISO修訂了C語言的標準。\\n\\n1995年,ISO對C90做了一些修訂,即“1995基準增補1(ISO\\/IEC\\/9899\\/AMD1:1995)”。1999年,ISO有對C語言標準進行修訂,在基本保留原來C語言特征的基礎上,針對應該的需要,增加了一些功能,尤其是對C 中的一些功能,命名為ISO\\/IEC9899:1999。\\n\\n2001年和2004年先後進行了兩次技術修正。\\n\\n目前流行的C語言編譯係統大多是以ANSIC為基礎進行開發的,但不同版本的C編譯係統所實現的語言功能和語法規則有略有差彆。\\n\\n優點\\n\\n簡潔緊湊、靈活方便\\n\\nC語言一共隻有32個關鍵字,9種控製語句,程式書寫形式自由,區分大小寫。把高級語言的基本結構和語句與低級語言的實用性結合起來。C語言可以像組合語言一樣對位、字節和地址進行操作,而這三者是計算機最基本的工作單元。\\n\\n運算符豐富\\n\\nC語言的運算符包含的範圍很廣泛,共有34種運算符。C語言把括號、賦值、強製類型轉換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。\\n\\n數據類型豐富\\n\\nC語言的數據類型有:整型、實型、字元型、數組類型、指針類型、結構體類型、共用體類型等。能用來實現各種複雜的數據結構的運算。並引入了指針概念,使程式效率更高。另外C語言具有強大的圖形功能,支援多種顯示器和驅動器。且計算功能、邏輯判斷功能強大。\\n\\n同時對於不同的編譯器也有各種\\n\\nC是結構式語言\\n\\n結構式語言的顯著特點是代碼及數據的分隔化,即程式的各個部分除了必要的資訊交流外彼此獨立。這種結構化方式可使程式層次清晰,便於使用、維護以及調試。C語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程式流向,從而使程式完全結構化。\\n\\n語法限製不太嚴格,程式設計自由度大\\n\\n雖然C語言也是強類型語言,但它的語法比較靈活,允許程式編寫者有較大的自由度。\\n\\n允許直接訪問實體地址,對硬體進行操作\\n\\n由於C語言允許直接訪問實體地址,可以直接對硬體進行操作,因此它既具有高級語言的功能,又具有低級語言的許多功能,能夠像組合語言一樣對位、字節和地址進行操作,而這三者是計算機最基本的工作單元,可用來寫係統軟件。\\n\\n生成目標代碼質量高,程式執行效率高\\n\\n一般隻比彙程式設計序生成的目標代碼效率低10へ20%。\\n\\n適用範圍大,可移植性好\\n\\nC語言有一個突出的優點就是適合於多種操作係統,如DOS、UNIX、windows98.windowsNT;也適用於多種機型。C語言具有強大的繪圖能力,可移植性好,並具備很強的數據處理能力,因此適於編寫係統軟件,三維,二維圖形和動畫,它也是數值計算的高級語言。\\n\\n缺點\\n\\n1.C語言的缺點主要表現在數據的封裝性上,這一點使得C在數據的安全性上有很大缺陷,這也是C和C 的一大區彆。\\n\\n2.C語言的語法限製不太嚴格,對變量的類型約束不嚴格,影響程式的安全性,對數組下標越界不作檢查等。從應用的角度,C語言比其他高級語言較難掌握。\\n\\n運算\\n\\nC語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程式設計語言。在表達式方麵較其它程式語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。在學習中,隻要我們對此合理進行分類,找出它們與我們在數學中所學到運算之間的不同點之後,記住這些運算也就不困難了,有些運算符在理解後更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。\\n\\n先要明確運算符按優先級不同分類,《C程式設計》運算符可分為15種優先級,從高到低,優先級為1~15,除第2.13級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序.\\n\\n結構\\n\\n順序結構\\n\\n順序結構的程式設計是最簡單的,隻要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。\\n\\n例如:a=3,b=5,現交換a,b的值,這個問題就好像交換兩個杯子水,這當然要用到第三個杯子,假如第三個杯子是c,那麼正確的程式為:c=a;a=b;b=c;執行結果是a=5,b=c=3如果改變其順序,寫成:a=b;c=a;b=c;則執行結果就變成a=b=c=5,不能達到預期的目的,初學者最容易犯這種錯誤。順序結構可以獨立使用構成一個簡單的完整程式,常見的輸入、計算,輸出三步曲的程式就是順序結構,例如計算圓的麵積,其程式的語句順序就是輸入圓的半徑r,計算s=3.14159*r*r,輸出圓的麵積s。不過大多數情況下順序結構都是作為程式的一部分,與其它結構一起構成一個複雜的程式,例如分支結構中的複合語句、循環結構中的循環體等。\\n\\n選擇結構\\n\\n順序結構的程式雖然能解決計算、輸出等問題,但不能做判斷再選擇。對於要先做判斷再選擇的問題就要使用選擇結構。選擇結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。選擇結構的程式設計方法的關鍵在於構造合適的分支條件和分析程式流程,根據不同的程式流程選擇適當的選擇語句。選擇結構適合於帶有邏輯或關係比較等條件判斷的計算,設計這類程式時往往都要先繪製其程式流程圖,然後根據程式流程寫出源程式,這樣做把程式設計分析與語言分開,使得問題簡單化,易於理解。程式流程圖是根據解題分析所繪製的程式執行流程圖。\\n\\n幾種基本的選擇結構①if(條件)\\n\\n{選擇體}\\n\\n這種選擇結構中的選擇體可以是一條語句,此時“{}”可以省略,也可以是多條語句即複合語句。它有兩條分支路徑可選,一是當條件為真,執行分支體,否則跳過選擇體,這時選擇體就不會執行。如:要計算x的絕對值,根據絕對值定義,我們知道,當x>=0時,其絕對值不變,而x