當(dāng)前很多比較流行的編程語(yǔ)言,例如 Java、Python、C++ 等,都是基于 C 語(yǔ)言,說(shuō) C 語(yǔ)言是現(xiàn)代編程語(yǔ)言的開(kāi)山鼻祖也毫不為過(guò)。如果想要成為一個(gè)程序編程高手,那么學(xué)習(xí) C 語(yǔ)言是必不可少的。下面我將通過(guò) C 語(yǔ)言一個(gè)簡(jiǎn)單的代碼程序,詳細(xì)分析程序的內(nèi)容。
一、代碼
#include <stdio.h>
int main()
{
puts("Hello World");
return 0;
}
二、頭文件
?#include<stdio.h>
?
當(dāng)C語(yǔ)言開(kāi)發(fā)者編寫(xiě)了許多的常用函數(shù),并把它們分別放在不同的文件下,而這些文件就被稱之頭文件。如果想要使用這些函數(shù),就得把函數(shù)所在頭文件引入,否則編譯器就找不到函數(shù)。
這個(gè)概念和 Java 中的導(dǎo)包、Python 中的倒庫(kù)有一些相似,在 Java 和 Python 中可以通過(guò) import 關(guān)鍵字來(lái)導(dǎo)入包和庫(kù),這樣才可以調(diào)用包或者庫(kù)中所有的方法或者函數(shù)。
在C語(yǔ)言中,引入頭文件使用的是 ?#include
? 命令,并把文件名放在? <>
?之間。?#include
?和? <>
?之間可以有空格,也可以沒(méi)有。
頭文件是以? .h
?作為后綴,C語(yǔ)言代碼文件中則是以? .c
?作為后綴,它們都屬于文本文件,在本質(zhì)上沒(méi)有什么區(qū)別。
#include 命令的作用不過(guò)就是把頭文件中的內(nèi)容復(fù)制到當(dāng)前文件下面,然后跟著當(dāng)前文件一起編譯。如果你把頭文件的內(nèi)容復(fù)制到當(dāng)前文件中,那么這樣你就不用引入頭文件。
注:頭文件并不是 C 語(yǔ)言中必須要引入的部分,如果下面程序要實(shí)現(xiàn)的功能沒(méi)有頭文件里面的函數(shù),那么就不需要將頭文件引入。例如:
int main(){
return 0;
}
這里沒(méi)有使用 puts 函數(shù),也因此無(wú)需引入頭文件。
三、函數(shù)的概念
?puts("Hello World")
?
這行代碼在顯示器上會(huì)顯示出“Hello World”,相當(dāng)于 Java 中? System.out.println
?或者 Python 中的 ?print
?,有輸出打印的意思。
在 C 語(yǔ)言中,有一些語(yǔ)句不需要帶括號(hào),而有的則是必須要帶括號(hào),而這一些帶括號(hào)的就被稱之為函數(shù)(Function)。
雖然我們?cè)谇么a的過(guò)程,只需要一句代碼就能夠?qū)崿F(xiàn)想要的效果。但是實(shí)現(xiàn)這些功能的底層都比較復(fù)雜,往往是軟件和硬件的結(jié)合,還需要考慮到方方面面。如果要把這些功能都讓程序員來(lái)完成,那么無(wú)疑就會(huì)增大程序員的學(xué)習(xí)成本以及降低編程效率。
因此,這些代碼早就被專門(mén)分類放在不同的文件里,而且每一段代碼都有一個(gè)自己唯一的名字。當(dāng)我們需要使用這個(gè)功能的時(shí)候,只需要在對(duì)應(yīng)的名字后面加上一個(gè) () 就可以了。像這種一段代碼就可以獨(dú)立完成某一些功能,一次編寫(xiě)后就可以反復(fù)調(diào)用,也就被稱之為函數(shù)。就如 puts(),它就是一段寫(xiě)好了,具有輸出功能的代碼。
四、自定義函數(shù)和main函數(shù)
C 語(yǔ)言中自身就有的函數(shù)就被稱之為庫(kù)函數(shù)(Library Function)。庫(kù)(Library)在編程語(yǔ)言中是一個(gè)很基本的概念,可以簡(jiǎn)單地把它看作是一些個(gè)函數(shù)的集合,在磁盤(pán)上相當(dāng)于是一個(gè)文件夾,函數(shù)就是它下面的子文件。
C 語(yǔ)言自身攜帶的庫(kù)稱作標(biāo)準(zhǔn)庫(kù)(Standard Library),而其他公司或者是個(gè)人開(kāi)發(fā)的庫(kù),叫做第三方庫(kù)(Third-Party Library)。
當(dāng)然,如果標(biāo)準(zhǔn)庫(kù)和第三方庫(kù)都沒(méi)有自己想要的函數(shù)方法,也可以編寫(xiě)自己的函數(shù),拓展程序的功能,而這一系列操作也就是自定義函數(shù)。在編寫(xiě)和使用方式上,自定義函數(shù)和庫(kù)函數(shù)是一致的,只是不同的機(jī)構(gòu)、不同的人編寫(xiě)而已。
如上面的代碼,?int main(){ 功能 };
?
- int 是 integer 的縮寫(xiě),意思是"整數(shù)”。它在這里的意思,就是為了告訴我們,這個(gè)函數(shù)返回的值只能是整數(shù)。
- main 是這個(gè)函數(shù)的名字。
- () 表示這是函數(shù)定義。
- {}; 大括號(hào)里面則是這個(gè)函數(shù)要實(shí)現(xiàn)的功能。
注:
C語(yǔ)言規(guī)定,每一個(gè)程序都必須有且僅有一個(gè) main 函數(shù),而 main 函數(shù)也被稱之為主函數(shù),是程序的入口函數(shù),每一個(gè)程序都是從 main 函數(shù)開(kāi)始,直到 main 函數(shù)結(jié)束。(遇到 return 或者執(zhí)行到函數(shù)末尾,函數(shù)才結(jié)束。)
這一點(diǎn)就相當(dāng)于 Java 中的 main 主方法,必須有這一個(gè) main 方法,Java程序才可以運(yùn)行。
所以說(shuō),如果沒(méi)有 main 函數(shù),那么 C 語(yǔ)言程序就不知道開(kāi)始的入口,在運(yùn)行的時(shí)候也就會(huì)產(chǎn)生報(bào)錯(cuò)。
五、總結(jié)
以上就是關(guān)于通過(guò)一段簡(jiǎn)單的 C 語(yǔ)言程序初步了解 C 語(yǔ)言的詳細(xì)內(nèi)容,想要了解更多關(guān)于 C 語(yǔ)言的其他內(nèi)容,可以閱讀瀏覽W3Cschool相關(guān)內(nèi)容的文章,如果本篇文章有幫助到您的學(xué)習(xí),也希望大家能夠?qū)ξ覀兌喽嗟仃P(guān)注和支持!