日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

我们编写的C代码是怎样跑起来的?

發(fā)布時間:2025/3/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我们编写的C代码是怎样跑起来的? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。