你不知道的C語言--第一篇——編譯和運行

相信不少理工科的同窗在大學期間都或多或少的學過C語言,但因爲老師教的不用心或者當時咱們知識的限制,致使咱們對C語言存在許多誤解。而且咱們在學習c語言時,爲了方便省事,大多數人都使用IDE,致使咱們對編譯的過程徹底沒有概念。
博主如今是一名大三的本科生,有幸讀到宋勁杉老師的《一站式學習C編程》,發現了許多原來對於c語言的錯誤和模糊的認識,因此總結出來供本身複習並與你們分享
有錯誤的地方請你們及時指正,謝謝!html

編譯執行

對於咱們初學編程時都要寫的hello world程序,相信你們都很是熟悉了,可是即便是這樣一個簡單的程序,咱們也未必都全能掌握,下面是helloworld代碼:linux

#include <stdio.h>
int main(void)
{
        printf("Hello, world.\n");
        return 0;
}

要在Linux上不借助任何IDE編譯運行它,咱們須要在命令行輸入一系列的命令:編程

$ gcc main.c -o main
$ ./main
Hello, world.

其中,gcc是linux下c語言的編譯器,gcc main.c -o main的意思是編譯main.c生成可執行文件main,這個main能夠本身命名。學習

對於編譯時的警告,有時候並不會所有提醒,但若是咱們在編譯時加上-Wall參數,編譯器便會顯示出全部的警告,供咱們參考修改程序:gcc -Wall main.c -o main命令行


編譯時和運行時

你們在初學c語言時,必定會被編譯時和運行時搞得一頭霧水,由於那時候咱們使用IDE一鍵運行,對於咱們來講編譯運行彷佛就是同樣的。然而有了上面的知識,咱們就很好區分編譯時和運行時了。code

所謂編譯時,就是咱們在命令行輸入gcc編譯文件後產生可執行文件的過程,在這段時間出現的錯誤,就是編譯時錯誤,一旦編譯時出現了錯誤,就不會再產生可執行文件了,編譯就被中斷了。htm

而運行時錯誤就是在編譯經過,生成可執行文件後,咱們運行這個可執行文件以後產生的錯誤,這種錯誤通常更難捕捉。get

如咱們在學習全局變量和局部變量時有一條規定:編譯器

局部變量能夠用類型相符的任意表達式來初始化,而全局變量只能用常量表達式來初始化。io

之因此會有這樣一條規定,就是由於全局變量必須在程序開始運行時初始化完成(運行任何語句以前),因此初始值必須保證保存在編譯生成的可執行文件中,所以初始值必須在編譯時計算出來。因此爲了簡化編譯器,才規定全局變量只能用常量表達式來初始化。

問題的關鍵仍是要區分編譯時運行時

參考文獻: 《一站式學習C編程》 宋勁杉

相關文章
相關標籤/搜索