App下載

從零開始學(xué)習(xí)C語言丨程序結(jié)構(gòu)和變量

三玹 2022-10-26 17:17:40 瀏覽數(shù) (1992)
反饋
原文: https://mp.weixin.qq.com/s?__biz=Mzg3OTc3MjcyOQ==&mid=2247483739&idx=1&sn=d414ef86124dc976fbb67463e197a841&chksm=cf7e140df8099d1b0194f5b3036743f45f85ffa8e130d5c9adb20ed02973b259ce8144eaa5ab&scene=178&cur_album_id=2588823761982849025#rd

 本文發(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é)構(gòu)
在上篇文章的最后,寫了一段最簡(jiǎn)單的C語言程序代碼 - 打印HelloWorld。借用這段代碼,來說一下C語言中的程序結(jié)構(gòu)。
#include<stdio.h>
int main(){
  printf("Hello World");
  return 0;
}

在這段代碼里,包含了以下幾個(gè)部分:

1、預(yù)處理指令
在C語言程序中,以#號(hào)開始的命令被稱之為預(yù)處理指令。其作用是,根據(jù)源代碼中的預(yù)處理部分進(jìn)行處理,處理完畢后才開始正式編譯你的源代碼。
這段代碼中的#include,是文件引入指令??梢砸胪獠繉懞玫脑创a文件,相當(dāng)于就是將引入的源代碼文件復(fù)制到自己寫的源代碼文件中。這樣一來,就可以調(diào)用外部文件中的內(nèi)容。
代碼中就引用了一個(gè)C語言的標(biāo)準(zhǔn)庫 stdio.h,可以調(diào)用一些輸入和輸出的方法。例如 scanf、printf 等等。如果沒有引入這個(gè)文件,就需要自己去實(shí)現(xiàn)怎么將內(nèi)容輸入到電腦上,怎么將內(nèi)容輸出到電腦屏幕上。實(shí)現(xiàn)這一個(gè)過程,其實(shí)還是挺復(fù)雜的,既然別人已經(jīng)寫好了,那么又何必去大費(fèi)周章地折騰呢?
2、主函數(shù)
主函數(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ì)展開。
3、執(zhí)行程序
在這一段代碼中,一共被執(zhí)行了兩個(gè)程序。一個(gè)是調(diào)用了標(biāo)準(zhǔn)庫 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ī)矩不成方圓,理論上你的變量你愛叫啥叫啥,但是也得在規(guī)矩范圍內(nèi)。就像你賺錢你愛怎么賺怎么賺,但就不能賺刑法這本書里面的錢,否則就得請(qǐng)你去吃公家飯了。
C語言中,起變量名的規(guī)則有下面幾條:
1、變量名必須以字母(A-z)、下劃線(_)起頭。
2、變量名不能以數(shù)字(0-9)起頭。
3、變量名中只能包含字母、下劃線、數(shù)字等。其他花里胡哨的符號(hào)是不被允許的。
4、變量名不能和關(guān)鍵字一樣,如return、continue、int等等。
5、變量名不允許用空格。
有效變量名:good、for_、_close、ac12_3f
無效變量名:1abc、return、for、hey man
同時(shí)C語言中是嚴(yán)格區(qū)分大小寫的,也就是 A 和 a 是兩個(gè)不同的變量名。
C語言關(guān)鍵字


本篇文章到這里就結(jié)束了,希望能夠?qū)Υ蠹业膶W(xué)習(xí)理解產(chǎn)生幫助。下一篇內(nèi)容來聊一聊C語言當(dāng)中的基本數(shù)據(jù)類型。





















C

0 人點(diǎn)贊