C語言知識彙總 | 06-第一個C語言程式分析——函數與main函數、標頭檔案

2020-08-08 21:46:35
#include <stdio.h>

int main()
{
    puts("neutionwei");
    return 0;
}

一、函數的概念

這行程式碼會在顯示器上輸出「neutionwei」。puts 後面要帶( ),字串也要放在( )中。

在C語言中,有的語句使用時不能帶括號,有的語句必須帶括號。帶括號的稱爲函數

C語言提供了很多功能,例如輸入輸出、獲得日期時間、檔案操作等,只需要一句簡單的程式碼就能夠使用。

這些程式碼,早已被分門別類地放在了不同的檔案中,並且每一段程式碼都有唯一的名字。使用程式碼時,只要在對應的名字後面加上( )就可以。這樣的一段程式碼能夠獨立地完成某個功能,一次編寫完成後可以重複使用,被稱爲函數(Function)。可以認爲,函數就是一段可以重複使用的程式碼。

函數的一個明顯特徵就是使用時必須帶括號( ),必要的話,括號中還可以包含待處理的數據。例如puts("neutionwei")就使用了一段具有輸出功能的程式碼,這段程式碼的名字是 puts,"C語言中文網" 是要交給這段程式碼處理的數據。使用函數在程式設計中有專業的稱呼,叫做函數呼叫(Function Call)

如果函數需要處理多個數據,那麼它們之間使用逗號,分隔,例如:

pow(10, 2);

該函數用來求10的2次方。

需要注意的是,C語言中的函數和數學中的函數不是同一個概念,不要拿兩者對比。函數的英文名稱是 Function,它還有「功能」的意思。

自定義函數和main函數

C語言自帶的函數稱爲庫函數(Library Function)。庫(Library)是程式設計中的一個基本概念,可以簡單地認爲它是一些列函數的集合,在磁碟上往往是一個資料夾。C語言自帶的庫稱爲標準庫(Standard Library),其他公司或個人開發的庫稱爲第三方庫(Third-Party Library)

除了庫函數,我們還可以編寫自己的函數,拓展程式的功能。自己編寫的函數稱爲自定義函數。自定義函數和庫函數在編寫和使用方式上完全相同,只是由不同的機構來編寫。

範例中的 main 是函數的名字,( ) 表明這是函數定義,{ } 之間的程式碼是函數要實現的功能。

函數可以接收待處理的數據,同樣可以將處理結果告訴我們;使用 return可以告知處理結果。範例中表明,main 函數的處理結果是整數 0。return 可以翻譯爲「返回」,所以函數的處理結果被稱爲返回值(Return Value)

第3行程式碼中,int 是 integer 的簡寫,意爲「整數」。它告訴我們,函數的返回值是整數。

需要注意的是,範例中的自定義函數必須命名爲 main。C語言規定,一個程式必須有且只有一個 main 函數。main 被稱爲主函數,是程式的入口函數,程式執行時從 main 函數開始,直到 main 函數結束(遇到 return 或者執行到函數末尾時,函數才結束)。也就是說,沒有 main 函數程式將不知道從哪裏開始執行,執行時會報錯。

綜上所述:範例中定義了主函數 main,它的返回值是整數 0,程式將從這裏開始執行。main 函數的返回值在程式執行結束時由系統接收。

有的將 main 函數寫作:

void main()
{
    // Some Code...
}

這在 VC++ 6.0 下能夠通過編譯,但在 C-Free、GCC 中卻會報錯,因爲這不是標準的 main 函數的寫法。

二、標頭檔案的概念

還有最後一個問題,範例中第1行的 #include <stdio.h>是什麼呢?

C語言開發者們編寫了很多常用函數,並分門別類的放在了不同的檔案,這些檔案就稱爲標頭檔案(header file)。每個標頭檔案中都包含了若幹個功能類似的函數,呼叫某個函數時,要引入對應的標頭檔案,否則編譯器找不到函數。

實際上,標頭檔案往往只包含函數的說明,也就是告訴我們函數怎麼用,而函數本身儲存在其他檔案中,在鏈接時纔會找到。可以暫時理解爲標頭檔案中包含了若幹函數。

引入標頭檔案使用 #include命令,並將檔名放在< >中,#include < > 之間可以有空格,也可以沒有。

標頭檔案以 .h爲後綴,而C語言程式碼檔案以.c爲後綴,它們都是文字檔案,沒有本質上的區別,#include 命令的作用也僅僅是將標頭檔案中的文字複製到當前檔案,然後和當前檔案一起編譯。你可以嘗試將標頭檔案中的內容複製到當前檔案,那樣也可以不引入標頭檔案。

.h中程式碼的語法規則和.c中是一樣的,也可以 #include <xxx.c>,這是完全正確的。不過實際開發中沒有人會這樣做。

較早的C語言標準庫包含了15個頭檔案,stdio.h 和 stdlib.h 是最常用的兩個:

  • stdio 是 standard input output 的縮寫,stdio.h 被稱爲「標準輸入輸出檔案」,包含的函數大都和輸入輸出有關,puts() 就是其中之一。
  • stdlib 是 standard library 的縮寫,stdlib.h 被稱爲「標準庫檔案」,包含的函數比較雜亂,多是一些通用工具型函數,system() 就是其中之一。

三、最後的總結

(1)第1行引入標頭檔案 stdio.h,這是程式設計中最常用的一個頭檔案。標頭檔案不是必須要引入的,我們用到了 puts 函數,所以才引入 stdio.h。例如下面 下麪的程式碼完全正確:

int main()
{
    return 0;
}

我們沒有呼叫任何函數,所以不必引入標頭檔案。

(2)第3行開始定義主函數 main。main 是程式的入口函數,一個C程式必須有 main 函數,而且只能有一個。

(3)第5行呼叫 puts 函數向顯示器輸出字串。

(4)第6行是 main 函數的返回值。程式執行正確一般返回 0。