C語言文章更新目錄
C/C++學習資源(百度雲盤鏈接)
計算機二級資料(過級專用)
C語言學習路線(從入門到實戰)
編寫C語言程序的7個步驟和編程機制
C語言基礎-第一個C程序
C語言基礎-簡單程序分析
VS2019編寫簡單的C程序示例
簡單示例,VS2019調試C語言程序
C語言基礎-基本算法
C語言基礎-數據類型
C語言中的輸入輸出函數
C語言流程控制語句
C語言數組——一維數組
C語言數組——二維數組
C語言數組——字符數組
C語言中常用的6個字符串處理函數
精心收集了60個C語言項目源碼,分享給大家
C語言核心技術——函數
要想弄明白這個問題,首先我們得了解下C語言的編程機制,關於編程機制我在前面的文章中提到過,但沒有過多的描述,今天我們就一起來看看這個問題。
我們先寫一個hello.c
文件
#include<stdio.h>
int main() {
printf("hello world!");
return 0;
}
這個文件其實是一個特殊的文本文件,就存在我們的磁盤上,被稱爲源代碼文件
源代碼文件是不能直接運行的,而我們平時運行的文件是可執行文件。
那麼,源代碼文件經過怎樣的變化才能變爲可執行文件呢?先思考一分鐘。。。
C語言是通過編譯和鏈接兩個步驟完成這一過程。編譯器把源代碼轉換成中間代碼hello.obj
,鏈接器把中間代碼和其它代碼合併,生成可執行文件。這裏所說的中間代碼就是目標文件,它裏面存放的是機器語言代碼。
說到這裏,有人就會問目標文件裏存放的是機器語言代碼,爲什麼不能直接運行目標文件呢?
其實目標文件裏存放的只是編譯器翻譯的源代碼,還不是一個完整的程序。
目標文件缺少啓動代碼和庫代碼,啓動代碼因系統不同會有所差異。幾乎所有的C程序都要C標準庫中的函數,例如hello.c
中的printf()
函數,這個函數真正的代碼存儲在一個被稱爲庫的文件中。
鏈接器的作用就是將目標文件、啓動代碼和庫代碼合併成一個可執行文件hello.exe
運行可執行文件,我們會看到下面的結果。
爲了更好的理解,這裏畫了一個流程圖供大家參考。
好了,今天就介紹到這,後面繼續更新