程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 0x01 概覽,0x01

0x01 概覽,0x01

編輯:關於C語言

0x01 概覽,0x01


交待了C語言的歷史、特性、優缺點、何其他基礎內容。

C起源於貝爾實驗室,於1972年開發,當時Dennis Ritchie和Ken Thompson一起設計UNIX系統。

特性:

//高效性

  指針:通過指針能夠直接對內存單元裡的數據進行操作,還可以用指針根據需要,隨時向系統動態的申請內存資源。

     指針機制的時間開銷和空間開銷都是最小的,運用指針機制,使得C/C++語言表達能力很強,能夠描述各種復雜的數據結構;可以操作變量、函數、對象等

  引用:引用 是 某個變量或對象 的 別名。(關鍵字typedef) 引用的實質就是引用地址,因而和指針是一樣高效的。但引用克服了指針帶來的不便。

  內聯函數:通常函數的調用需要一定的時間開銷,這意味著調用時,時間用於建立調用、傳遞參數、跳轉到函數代碼並返回。嗯,就相當於#define的加強版。

//可移植性 

      這意味著,在一個系統上編寫的C程序,經過很少的改動或不經過修改就可以在其他系統上運行。如果修改是必要的,則通常只需要改變伴隨主程序的一個頭文件中的幾項內容即可。

//面向編程人員

  C語言允許訪問硬件,並可以操縱內存中的特定位。 

  C的語法不像其他語言那樣嚴格,但使用C的時候,可能會犯一些其他語言中不會出現的錯誤。C有更多的自由,但使用的時候有更大的風險。

//缺點

  它沒有邊界檢查,很容易發生內存沖突,有懸空指針和內存/資源洩漏,螺栓支持並發性,沒有模塊,沒有命名空間。錯誤處理可能相當繁瑣和冗長。當調用堆棧崩潰,或者攻擊性輸入操縱你的進程,很容易就產生一堆錯誤。

  C的簡潔性和其豐富的運算符相結合,使其可能會編寫出極其難以理解的代碼。C表達自由方面也有風險,你可能會犯非常難以追蹤的編程錯誤。自由的代價永遠是警惕。

c還有安全性,可靠性,但我不想再繼續這個話題了。

 

關於C語言和計算機的工作原理,也有緊密的聯系。這也說明,學好C還需學好微機原理。

cpu的工作非常簡單:從內存中獲取一個指令並執行,然後從內存中獲取下一個指令並執行。。。。。。

cpu的工作區在寄存器(registers)之中,每個寄存器只能保存一個數。

cpu只能理解有限的指令(指令集,更多內容,學匯編去吧。這就是為什麼做逆向的需要一定的匯編知識),這些指令相當的具體,比如,把某個數從內存單元移到寄存器

 

編寫C程序的理想化的7個步驟:

  1、定義目標:這一階段,應該用一般概念來考慮問題,而不是用一些具體語言。

  2、設計程序:決定程序如何完成目標,用戶界面如何,程序如何組織,目標用戶是誰,時間規劃。還有算法和數據結構的設計。

  3、編寫代碼:選擇編程語言(這裡的話當然選C),選擇開發環境(IDE?或者是編譯器+文本編輯器?),代碼風格,注釋(不要瞧不起注釋!!!)等等。

  4、編譯代碼:這是編譯器(Compiler)的工作,將源代碼轉化為可執行代碼。 還有一個東西叫鏈接器(linker),他主要是將庫例程引入,形成一個可以運行的可執行文件。

  5、運行程序:IDE中直接點“運行” or “Run”。GCC編譯器呢,在命令行中,轉到該目錄下,鍵入可執行文件名即可。例如Linux中的 “gcc hello.c -o hello.out”  然後“./hello.out”

  6、測試調試:當程序運行之後的效果或結果不是所預想的時候,就要檢查代碼了,關於Debug,這也是一門技術。不在此繼續話題

  7、維護修改:程序做出來後,可能會有其他改進或者有Bug需要解決,或者添加一些其他的功能等等

編程工作不可能是這麼一~條~龍下來的。根據需要在不同步驟之間來回反復。或者改變了想法,重新開始工作等等。所以,在編寫代碼前,先進行好規劃。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved