我们编写的C代码是怎样跑起来的?
C語言文章更新目錄
C/C++學習資源(百度云盤鏈接)
計算機二級資料(過級專用)
C語言學習路線(從入門到實戰(zhàn))
編寫C語言程序的7個步驟和編程機制
C語言基礎-第一個C程序
C語言基礎-簡單程序分析
VS2019編寫簡單的C程序示例
簡單示例,VS2019調(diào)試C語言程序
C語言基礎-基本算法
C語言基礎-數(shù)據(jù)類型
C語言中的輸入輸出函數(shù)
C語言流程控制語句
C語言數(shù)組——一維數(shù)組
C語言數(shù)組——二維數(shù)組
C語言數(shù)組——字符數(shù)組
C語言中常用的6個字符串處理函數(shù)
精心收集了60個C語言項目源碼,分享給大家
C語言核心技術——函數(shù)
要想弄明白這個問題,首先我們得了解下C語言的編程機制,關于編程機制我在前面的文章中提到過,但沒有過多的描述,今天我們就一起來看看這個問題。
我們先寫一個hello.c文件
#include<stdio.h>int main() {printf("hello world!");return 0; }這個文件其實是一個特殊的文本文件,就存在我們的磁盤上,被稱為源代碼文件
源代碼文件是不能直接運行的,而我們平時運行的文件是可執(zhí)行文件。
那么,源代碼文件經(jīng)過怎樣的變化才能變?yōu)榭蓤?zhí)行文件呢?先思考一分鐘。。。
C語言是通過編譯和鏈接兩個步驟完成這一過程。編譯器把源代碼轉(zhuǎn)換成中間代碼hello.obj,鏈接器把中間代碼和其它代碼合并,生成可執(zhí)行文件。這里所說的中間代碼就是目標文件,它里面存放的是機器語言代碼。
說到這里,有人就會問目標文件里存放的是機器語言代碼,為什么不能直接運行目標文件呢?
其實目標文件里存放的只是編譯器翻譯的源代碼,還不是一個完整的程序。
目標文件缺少啟動代碼和庫代碼,啟動代碼因系統(tǒng)不同會有所差異。幾乎所有的C程序都要C標準庫中的函數(shù),例如hello.c中的printf()函數(shù),這個函數(shù)真正的代碼存儲在一個被稱為庫的文件中。
鏈接器的作用就是將目標文件、啟動代碼和庫代碼合并成一個可執(zhí)行文件hello.exe
運行可執(zhí)行文件,我們會看到下面的結果。
為了更好的理解,這里畫了一個流程圖供大家參考。
好了,今天就介紹到這,后面繼續(xù)更新
總結
以上是生活随笔為你收集整理的我们编写的C代码是怎样跑起来的?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言核心技术——函数
- 下一篇: C语言实现字符串的加密和解密