C語言知識總結(一)

2021-08-01 07:10:59 字數 2663 閱讀 8148

使用者模式:應用程式都是執行在使用者區域

核心模式:作業系統的核心,裝置驅動程式,這些都是在核心模式下執行的

大小端與進製關係

乙個位只能表示0,或者1兩種狀態,簡稱bit,乙個位是乙個bit

乙個位元組為8個二進位制,稱為8位,簡稱byte,8個位元是乙個位元組

乙個字為2個位元組,簡稱word。

兩個字為雙字,簡稱dword

進製:c語言當中0前置表示八進位制,0666;用0x前置表示十六進製制

原碼補碼和反碼

原碼:將最高位做為符號位(0代表正,1代表負),其餘各位代表數值本身的絕對值

+7的原碼是00000111

-7的原碼是10000111

+0的原碼是00000000

-0的原碼是10000000

反碼:(負數變)

乙個數如果值為正,那麼反碼和原碼相同

乙個數如果為負,那麼符號位為1,其他各位與原碼相反

+7的反碼00000111

-7的反碼11111000

-0的反碼11111111

補碼:(減法可用加法)

原碼和反碼都不利於計算機的運算,如:原碼表示的7和-7相加,還需要判斷符號位。

正數:原碼,反碼補碼都相同

負數:最高位為1,其餘各位原碼取反,最後對整個數 + 1

-7的補碼:10000111(原碼)

111111000(反碼)

11111001(補碼)

+0的補碼為00000000

-0的補碼也是00000000

補碼符號位不動,其他位求反,最後整個數 + 1,得到原碼

用補碼進行運算,減法可以通過加法實現

7-6=1

7的補碼和-6的補碼相加:00000111 + 11111010 = 100000001

進製捨棄後,剩下的00000001就是1的補碼

-7+6 = -1

-7的補碼和6的補碼相加:11111001 + 00000110 = 11111111

11111111是-1的補碼

大端對齊和小端對齊

對於arm,intel這種x86構架的複雜指令cpu,整數在記憶體中是倒著存放的,低位址放低位,高位址放高位,小端對齊。

但對於unix伺服器的cpu,更多是採用大端對齊的方式存放整數

機器語言:由二進位制指令組成,是計算機可直接執行的語言。不可以乙隻,只能在某種型別的計算機上執行、

組合語言:

高階語言:可移植

源程式: 用高階程式語言寫成的程式。

目標程式: 源程式的機器語言版本。

編譯器: 把高階語言寫成的源程式轉化為機器語言的目標程式的程式

c語言程式的過程都是由語句組成的。語句是程式的基本書寫單位和執行單位,資料及其操作都是用語句的形式描述的。c語言中的語句可分為如下五種:(1)表示式語句(2)宣告語句(3)空語句(4)塊語句(5)流控制語句

c源程式的結構特點

1.乙個c語言源程式可以由乙個或多個原始檔組成。

2.每個原始檔可由乙個或多個函式組成。

3.乙個源程式不論由多少個檔案組成,都有乙個且只能有乙個main函式,即主函式。

4.源程式中可以有預處理命令(include 命令僅為其中的一種),預處理命令通常應放在原始檔或源程式的最前面。

5.每乙個說明,每乙個語句都必須以分號結尾。但預處理命令,函式頭和花括號「}」之後不能加分號。

6.識別符號,關鍵字之間必須至少加乙個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。

在c語言中使用的詞彙分為六類:識別符號,關鍵字,運算子,分隔符,常量,注釋符等。

從程式流程的角度來看,程式可以分為三種基本結構,即順序結構、分支結構、迴圈結構。

c語言的缺陷:

c語言不是強型別語言,缺少對字串和記錄的處理,缺少執行期間檢查,為了追求效率,執行期間,c不檢查諸如陣列越界之類的錯誤。

c中很多地方容易使得程式設計師產生誤解,諸如運算子優先順序規則,c一些地方定義不完備,執行結果因編譯器不同而改變。

注意細節:變數定義時,一定要初始化,不要有多餘的變數,定義了就要使用,不使用就不定義

1.include標頭檔案。在c語言當中,任何庫函式呼叫都需要提前包含標頭檔案

《標頭檔案》,代表讓c語言編譯器去系統目錄下尋找相關的標頭檔案

「標頭檔案」,代表讓c語言編譯器去使用者當前目錄下尋找相關標頭檔案

2.return:乙個函式遇到return就終止(生命週期到了)

gcc –e –o a.e  a.c

預編譯a.c檔案,生成的目標檔名為a.e

預編譯是將include包含的標頭檔案內容替換到c檔案中中,同時將**中沒用的注釋部分刪除

-s彙編將c語言轉化為組合語言,-c編譯將**編譯為二進位制的機器指令,鏈結gcc沒有任何引數,代表就是鏈結

C語言知識總結(一)

第一章 概述 1 c語言的基本知識 1.1 c語言的執行步驟 編輯 程式 的錄入,生成源程式 c 編譯 語法分析查錯,翻譯生成目標程式 obj 語法或邏輯錯誤,從第乙個開始改,變數定義,語句格式,表示式格式等 鏈結 與其他目標程式或庫鏈結裝配,生成可執行程式 exe 執行1.2 main函式的基本知...

C語言知識總結

分析靜態儲存區 堆 棧 靜態儲存區 編譯時由編譯器分配,由系統釋放,其存放在的是全域性變數 static變數和常量。對 由程式設計師自己分配釋放,若不手動釋放程式結束才釋放。若對分配空間不用時不釋放而一味分配,則可能造成記憶體洩露,其容量取決於虛擬記憶體,較大。區別 1 棧是由高位址向低位址擴充套件...

C語言知識總結

第一章 1 程式語言的發展 機器語言 組合語言 高階語言 2 軟體開發的基本步驟 分析問題,激勵數學模式 確定資料的結構和演算法 程式語言 除錯程式 3 演算法 特徵 有窮性 確定性 有效性 有零個或多個輸入 有乙個或多個輸出 分類 數值運算演算法和非數值運算演算法 4 編碼實現 a.編寫源 b.將...