本文發(fā)布于微信公眾號(hào):三玹
本來打算是要說一說變量和數(shù)據(jù)類型的內(nèi)容,但是整理一下,發(fā)現(xiàn)需要插隊(duì)先說一下程序結(jié)構(gòu)。另外,還發(fā)現(xiàn)數(shù)據(jù)類型要展開的內(nèi)容還是蠻多的。因此,數(shù)據(jù)類型的內(nèi)容就留待下一篇文章。
在上篇文章的最后,寫了一段最簡(jiǎn)單的C語言程序代碼 - 打印HelloWorld。借用這段代碼,來說一下C語言中的程序結(jié)構(gòu)。#include<stdio.h>
int main(){
printf("Hello World");
return 0;
}
在這段代碼里,包含了以下幾個(gè)部分:
在C語言程序中,以#號(hào)開始的命令被稱之為預(yù)處理指令。其作用是,根據(jù)源代碼中的預(yù)處理部分進(jìn)行處理,處理完畢后才開始正式編譯你的源代碼。這段代碼中的#include,是文件引入指令??梢砸胪獠繉懞玫脑创a文件,相當(dāng)于就是將引入的源代碼文件復(fù)制到自己寫的源代碼文件中。這樣一來,就可以調(diào)用外部文件中的內(nèi)容。
代碼中就引用了一個(gè)C語言的標(biāo)準(zhǔn)庫(kù) stdio.h,可以調(diào)用一些輸入和輸出的方法。例如 scanf、printf 等等。如果沒有引入這個(gè)文件,就需要自己去實(shí)現(xiàn)怎么將內(nèi)容輸入到電腦上,怎么將內(nèi)容輸出到電腦屏幕上。實(shí)現(xiàn)這一個(gè)過程,其實(shí)還是挺復(fù)雜的,既然別人已經(jīng)寫好了,那么又何必去大費(fèi)周章地折騰呢?主函數(shù)相當(dāng)于是C語言的大門,函數(shù)里面的程序就是C語言要運(yùn)行的主體部分,遇到關(guān)鍵字return就結(jié)束程序。同時(shí),每個(gè)C語言程序有且僅有一個(gè)大門,就像每戶人家只有一扇大門。一個(gè)有身份的人來拜訪,肯定是從大門迎接,也是從大門送客。而這個(gè)有身份的人,就是系統(tǒng)。int 是函數(shù)的類型,也就是函數(shù)最終要返回的數(shù)據(jù)是什么類型的。main 是函數(shù)的名字,() 里面是函數(shù)的參數(shù)內(nèi)容,{} 里面是函數(shù)的邏輯主體,也就是程序運(yùn)行的主要內(nèi)容。這些部分,就留待后面函數(shù)部分再詳細(xì)展開。在這一段代碼中,一共被執(zhí)行了兩個(gè)程序。一個(gè)是調(diào)用了標(biāo)準(zhǔn)庫(kù) stdio.h 中的 printf 方法,用來將 Hello World 打印在控制臺(tái)(電腦屏幕上)。另一個(gè)是 return 0。return 是C語言中的一個(gè)關(guān)鍵字,當(dāng)函數(shù)碰到 return 的時(shí)候就表示已經(jīng)結(jié)束了,同時(shí)還要把 return 后面的內(nèi)容返回出去。這里返回一個(gè)0,表示程序終止的意思。變量的作用是用來存儲(chǔ)值,而值存儲(chǔ)的位置是在內(nèi)存中。可以理解為每創(chuàng)建一個(gè)變量就需要在內(nèi)存中開辟出一個(gè)空間,用來存儲(chǔ)值。因此,變量指向的是內(nèi)存中的存儲(chǔ)單元。如果沒有變量,那對(duì)于程序員無疑是一場(chǎng)災(zāi)難。假設(shè)我現(xiàn)在有100個(gè)變量存放在內(nèi)存中,那么我需要記住100個(gè)編號(hào)(內(nèi)存中有很多的存儲(chǔ)單元,每個(gè)單元都對(duì)應(yīng)的編號(hào),編號(hào)是用十六進(jìn)制表示:61ff1c)。顯然,這是不可能的。像我這么懶的人,如果看到要記這么多的東西,那這輩子都不可能學(xué)編程的。
所以,變量很好地解決了這個(gè)問題。值存儲(chǔ)在哪個(gè)存儲(chǔ)單元,它的編號(hào)是什么,這就不是我需要考慮的,我只需要記住變量名就夠了。而且這個(gè)變量名我可以根據(jù)值的內(nèi)容來進(jìn)行命名比如age、name等等,這不比16進(jìn)制的編號(hào)好記?一個(gè)變量具備了:變量類型、變量名、變量值這三要素。把內(nèi)存比作一座準(zhǔn)備出租的大樓,每個(gè)房子都是一個(gè)變量。房子的類型有單間、復(fù)式、三室一廳等等,這對(duì)應(yīng)變量的數(shù)據(jù)類型;房子的編號(hào)對(duì)應(yīng)了變量名;入住的租客對(duì)應(yīng)變量值。第一種,先聲明,再賦值。首先要把盒子建好,但是在一開始不知道要往盒子里面裝什么具體的東西,等到后面有用的時(shí)候裝進(jìn)去。int main(){
int a;
a = 123;
}
第二種,聲明時(shí)同時(shí)賦值。手上有具體的東西,同樣第一時(shí)間是需要把盒子建好,然后同時(shí)把東西放進(jìn)去。
int main(){
char c = 'a';
}
正所謂無規(guī)矩不成方圓,理論上你的變量你愛叫啥叫啥,但是也得在規(guī)矩范圍內(nèi)。就像你賺錢你愛怎么賺怎么賺,但就不能賺刑法這本書里面的錢,否則就得請(qǐng)你去吃公家飯了。1、變量名必須以字母(A-z)、下劃線(_)起頭。
3、變量名中只能包含字母、下劃線、數(shù)字等。其他花里胡哨的符號(hào)是不被允許的。4、變量名不能和關(guān)鍵字一樣,如return、continue、int等等。有效變量名:good、for_、_close、ac12_3f無效變量名:1abc、return、for、hey man同時(shí)C語言中是嚴(yán)格區(qū)分大小寫的,也就是 A 和 a 是兩個(gè)不同的變量名。
本篇文章到這里就結(jié)束了,希望能夠?qū)Υ蠹业膶W(xué)習(xí)理解產(chǎn)生幫助。下一篇內(nèi)容來聊一聊C語言當(dāng)中的基本數(shù)據(jù)類型。