21天学通C语言-学习笔记(2)
第二章 C語言編程準(zhǔn)備
第一章介紹了C語言的歷史和程序設(shè)計(jì)的一些知識(shí),本章將介紹C語言的特點(diǎn)。C程序由許許多多的標(biāo)識(shí)符、關(guān)鍵字和操作符等組成。C語言規(guī)定了簡單有效的語法規(guī)則并將它們組合在一起,串成一個(gè)個(gè)有豐富功能的程序。
2.1 C程序簡介
本節(jié)將通過兩個(gè)簡單的C程序的講解,使大家對(duì)C語言的特點(diǎn)有一個(gè)初步的印象。
2.1.1 簡單C程序示例
【范例2-1】輸出一個(gè)正方形,實(shí)現(xiàn)方法如示例代碼2-1所示。
示例代碼2-1
#include <stdio.h> /*包含文件*//*空行*/ int main(void) { /*main函數(shù)的聲明,下面都為main函數(shù)的函數(shù)體*//*使用printf語句逐行輸出正方形*/printf("* * * * *\n"); /*輸出第1行*/printf("* *\n"); /*輸出第2行*/printf("* *\n"); /*輸出第3行*/printf("* *\n"); /*輸出第4行*/printf("* * * * *\n"); /*輸出第5行*//*空行*/return 0; /*返回語句*/ }【運(yùn)行結(jié)果】程序運(yùn)行后,得到一個(gè)由*號(hào)組成的正方形框,可在Visual Studio上驗(yàn)證。
【代碼解析】
- 第5~9行是函數(shù)體的內(nèi)容,是程序功能的實(shí)現(xiàn)主體。每一行都是一個(gè)函數(shù)調(diào)用語句,調(diào)用了printf函數(shù),其功能為打印子串。第5行打印的子串內(nèi)容為“* * * * * *\n”,這個(gè)子串輸出到屏幕時(shí)會(huì)將其中的\n處理為換行,其余字符按原樣輸出。
- 第10行與第2行一樣,也是一個(gè)空行。同樣也是為了隔開功能不同的兩個(gè)程序段而設(shè)置的。
- C99標(biāo)準(zhǔn)規(guī)定無形參的main函數(shù)的聲明要寫為“int main(void)”,且要有“return 0;”語句。
【范例代碼2-2】本范例簡單地展示了C語言中一些操作符、變量和數(shù)據(jù)類型,實(shí)現(xiàn)方法如示例代碼2-2所示。
示例代碼2-2
#include <stdio.h> /*包含文件*//*包含空行*/ int main(void){ /*main函數(shù)聲明*//*定義兩個(gè)整型變量*/int a = 3; /*定義并初始化a*/int b = 7; /*定義并初始化b*//*定義兩個(gè)浮點(diǎn)型變量*/double c = 2.4; /*定義并初始化c*/double d = 7.4; /*定義并初始化d*//*使用操作符進(jìn)行計(jì)算*/b = b + a; /*對(duì)b賦值*/d = c * d; /*對(duì)d賦值*//*定義兩個(gè)整型變量*/printf("a = %d\n", a); /*輸出a的值*/printf("b = %d\n", b); /*輸出b的值*/printf("c = %d\n", c); /*輸出c的值*/printf("d = %d\n", d); /*輸出d的值*/return 0; }【代碼說明】%d 的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。在這里,printf函數(shù)用字符串外的數(shù)值替換字符串中的內(nèi)容后輸出。
2.1.2 C程序的特點(diǎn)
-
C程序開頭一般都有一些以#include開頭的預(yù)處理語句,它的作用是用來包含一些外部文件;
-
都有一個(gè)main函數(shù),它是程序的執(zhí)行入口;
-
main函數(shù)都有以下聲明:
int main(void)
-
程序的執(zhí)行主體都放在main函數(shù)的函數(shù)體中;
-
變量必須定義后才能使用;
-
可以使用一系列的操作符對(duì)變量進(jìn)行操作;
-
可以調(diào)用函數(shù)來執(zhí)行一些功能;
-
都含有如下返回函數(shù)值的return語句:
return 0;
-
程序執(zhí)行過程中,從main函數(shù)開始,到它的return語句結(jié)束;
-
一般有適當(dāng)?shù)淖⑨屨Z句,以輔助說明語句功能;
-
在不同程序段之間要適當(dāng)?shù)丶涌招?#xff0c;使程序結(jié)構(gòu)清晰;
-
程序語句要有良好的縮進(jìn)風(fēng)格,以提高代碼可讀性。
2.1.3 標(biāo)識(shí)符和關(guān)鍵字
標(biāo)識(shí)符是在C語言中用來標(biāo)識(shí)唯一的對(duì)象的符號(hào)。具體地說,就是各種名稱,如變量的名稱、常量的名稱、函數(shù)的名稱、數(shù)據(jù)類型的名稱、命令的名稱等。例如,在范例2-1中,include是標(biāo)識(shí)符、main是標(biāo)識(shí)符、int是標(biāo)識(shí)符、void是標(biāo)識(shí)符、printf是標(biāo)識(shí)符,return是標(biāo)識(shí)符。
標(biāo)識(shí)符的第一個(gè)字符必須是字母或下劃線,后跟字母、下劃線或數(shù)字。標(biāo)識(shí)符中區(qū)別大小寫字母。
關(guān)鍵字也是標(biāo)識(shí)符。在范例2-1和范例2-2中接觸到了幾個(gè)C語言的關(guān)鍵字,如int、double、void、return等。關(guān)鍵字是C語言定義的一些有特殊意義的字符串,是為C編譯器專門保留的,因此,也稱為保留字。由于關(guān)鍵字有特殊的含義,因此,程序員不能使用這些字符串作為變量名和函數(shù)名。
| restrict | Unsigned |
| break | Bool |
| extern | return |
| Void | case |
| float | continue |
| short | Volatile |
| char | for |
| signed | If |
| While | const |
| goto | sizeof |
| static | default |
| inline | struct |
| do | int |
| switch | double |
| long | typedef |
| else | register |
| union | _Complex |
| _Imaginary | auto |
| enum |
2.1.4 C程序的執(zhí)行步驟
1.編譯:編譯過程就是把C程序翻譯成機(jī)器認(rèn)可的機(jī)器碼的過程。這個(gè)過程又分為預(yù)編譯、編譯階段、優(yōu)化階段和匯編階段四個(gè)部分。
-
預(yù)編譯也叫預(yù)處理,就是在正式編譯前所做的工作。C程序中的預(yù)處理命令都在這個(gè)階段完成,預(yù)編譯完成的基本上是對(duì)源程序的“替代”工作,如“#include<studio.h>”,就是使用文件“studio.h”的內(nèi)容替換該命令。
-
編譯階段負(fù)責(zé)對(duì)預(yù)編譯后的C程序進(jìn)行詞法和語法分析,C程序中的詞法錯(cuò)誤和語法錯(cuò)誤會(huì)在這里被發(fā)現(xiàn)。
2.鏈接: 經(jīng)過編譯后得到的目標(biāo)文件中的機(jī)器碼是相互獨(dú)立的,需要鏈接器將它們組合在一起,并解析它們之間的交叉引用。C程序如果調(diào)用了函數(shù)庫,這個(gè)過程就會(huì)將調(diào)用命令與被調(diào)用的函數(shù)鏈接在一起。
3.運(yùn)行:完成鏈接后,就會(huì)得到一個(gè)可執(zhí)行文件,可以直接運(yùn)行。運(yùn)行后,就可以得到程序結(jié)果。如果程序中有屏幕輸出的命令,便可以在屏幕上看到打印內(nèi)容。
2.2 C程序開發(fā)環(huán)境
Turbo C、Visual C++ 2005、GCC3.2.2
2.3 小結(jié)
本章先介紹了C語言的一些基本特點(diǎn),再介紹了標(biāo)識(shí)符和關(guān)鍵字的概念,然后介紹了編譯、鏈接和運(yùn)行等在程序開發(fā)過程中的角色,最后介紹了開發(fā)環(huán)境,這是學(xué)習(xí)C語言最基本的技能。
總結(jié)
以上是生活随笔為你收集整理的21天学通C语言-学习笔记(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python Tricks(十九)——
- 下一篇: ajaxSubmit异步提交