C語言學習第001課 認識C語言

2021-10-08 16:58:27 字數 2533 閱讀 4662

機器語言 機器直接執行的指令,全部為01數字

組合語言 固定的語法和語句,晦澀難懂

c語言(高階語言),語法簡潔,易讀懂

#include

intmain()

以上,就是乙個最簡單的c語言helloworld程式。從第一行說起

#include

此行**表示匯入乙個檔案stdio.h,,std是乙個標準庫,io表示輸入輸出,h表示標頭檔案

#include

匯入乙個lib標頭檔案,匯入之後,可以直接呼叫系統函式,如system(),

system函式可以開啟乙個外部的應用程式,如果帶路徑,需要使用\\或者/

返回值:成功為0 失敗為任意數字

int value =

system

("d:/desktop/feiq.exe");

system

("pause");

//表示程式執行到這裡會暫停

<>尖括號表示匯入的是系統標頭檔案,「」雙引號表示匯入的是自定義的標頭檔案

寫完**需要編譯才能成為可執行程式,才能被執行,下面介紹兩種編譯方式:

一步編譯和分步編譯

一步編譯:

gcc -o 檔案路徑+檔名稱.exe 檔案路徑+檔名稱.c

gcc -o 可執行檔名稱.exe 源**檔名稱.c(如果有多個源**檔案,空格後面繼續加源**檔案)

(沒有gcc的需要先安裝gcc)

分步編譯:

1、預處理 巨集定義展開 標頭檔案展開 條件編譯 去掉注釋 這裡不會檢查語法   gcc -e hello.c -o hello.i  生成乙個hello.i檔案

2、編譯 檢查語法 將c語言轉成組合語言 gcc -s hello.i -o hello.s 生成乙個hello.s檔案

3、彙編 將組合語言轉成機器語言(二進位製碼) gcc -c hello.s -o hello.o 生成乙個hello.o檔案

4、鏈結 將c語言依賴庫連線到程式中 gcc hello.o -o hello.exe

程式不啟動的時候,存放在硬碟中,啟動的時候,將exe檔案載入到記憶體中,記憶體分為4個部分,**區,資料區,棧區,堆區

在對程式進行操作的時候,記憶體區會將資料交給cpu進行運算,cpu分為三個部分,運算器,控制器,暫存器,最後程式如果退出了,程式會繼續存放在硬碟中。

記憶體和cpu之間的資料互動是通過匯流排完成的。

暫存器是cpu內部最基本的儲存單元

cpu對外是通過匯流排(位址,控制,資料)來和外部裝置互動的,匯流排的寬度是8位,同時cpu的暫存器也是8位,那麼這是乙個8位cpu

如果匯流排是32位的,暫存器也是32位的,那麼這個cpu就叫做32位cpu

有一種cpu內部暫存器是32位,但是匯流排是16位,稱為準32位cpu

所有的64位cpu相容32位指令,32位相容16位的指令,

在64位的cpu架構上執行了64位的軟體作業系統,那麼這個系統是64位

在64位的cpu架構上執行了32位的軟體作業系統,那麼這個系統是32位

64位的軟體不能執行在32位的cpu上

8位             16位            32位            64位

a ax eax rax

b bx ebx rbx

c cx ecx rcx

d dx edx rdx

按cpu遠近來分,離得最近的是暫存器,然後是cpu快取 最後是記憶體

cpu計算時,要預先把要用的資料從硬碟讀取到記憶體,然後再把即將要用的資料讀到暫存器,cpu<–>暫存器<–>記憶體

那為什麼會有快取呢?因為如果經常性的操作記憶體中同一位址的資料,就會影響速度,於是就在暫存器與記憶體之間,設定乙個快取

因為快取提取的速度遠高於記憶體,當然快取的**就遠高於記憶體

由此可以看出,從遠近來看 cpu<–>暫存器<–>快取<–>記憶體

注意:電腦一關機,暫存器和記憶體的東西全部清零,只剩下硬碟的東西可以儲存

c語言加法**:		int a =10;

int b =20;

int c = a+b;

組合語言加法: __asm

在組合語言中:

mov  移動

add 新增

push 壓棧

pop 出棧

call 呼叫

C語言學習筆記 001

接觸c語言一年有餘,自知所學不精,特開此欄以小片段形式記錄查漏補缺中遇到的知識點。main函式的引數 參考 int main int argc,char argv main函式可以帶兩個引數,argc為整形,表示命令行中引數的個數 argv 為指向字串的指標陣列,存放各個引數,其中0位置上的引數為該...

c語言學習第

1.識別符號只能由數字字母下劃線構成,字母放在第一位。2.while c getchar n 用來記錄一串字元,注意括號。3.變數的作用域與生存期。變數的作用域指乙個變數在一串 中能夠起作用的範圍。生存期是指變數從生存到消亡的過程。例如 void ex int a printf d a int ma...

從零開始的C語言學習001

從零開始的c語言學習001 1,在乙個project下建了兩個檔案,都用了main入口,報錯,1 duplicated symbol,而且報錯報的是 main重複,查詢後得知c語言不能這樣寫,得寫在乙個檔案裡 2,不死心後想建兩個檔案後呼叫,使用呼叫.件的方式,建立是成功了,就是沒有後續輸出結果 3...