C語言入門(1)
程式的基本概念
即用計算機語言描述的解決某一問題的一系列加工步驟,是符合一定文法規則的符号序列。
程式設計就是借助計算機語言,告訴計算機要處理什麼(處理資料)以及如何處理。
程式設計語言
-
機器語言
指計算機能夠識别的指令集合,每條指令都用二進制0和1組成的序列來表示。
計算機可以直接執行,且執行效率高。
-
彙編語言
采用的一些助記符号來表示機器語言的機器指令,助記符号一般采用代表某種操作的英文單詞的縮寫。
用彙編語言編寫的程式稱為源程式,計算機不能直接執行,必須通過彙程式設計式翻譯成機器語言才能執行。
-
進階語言
面向算法過程的語言,接近自然語言的形式,一條語句相當與多條彙編語言指令或機器語言指令。
不能直接執行進階語言源程式,必須經過編譯和連接配接過程,将其翻譯成機器語言程式才能由計算機執行。
-
面向任務的程式設計語言
非過程化語言,無須知道問題如何求解,隻需要描述求解什麼問題,便可程式設計實作。
資料庫便是一種面向任務的程式設計語言。這類語言被廣泛應用在管理資訊系統應用軟體的開發方面。
- 面向對象的程式設計語言
具有類的定義功能,對象的生成功能,消息傳遞機制和類的繼承機制。
如:Java
什麼是程式設計語言
通過有固定格式和固定詞彙的“語言”來控制他人,讓他人為我們做事情。也可以通過”語言“來控制計算機,讓計算機為我們做事情,這樣的語言就叫做程式設計語言(Programming Language)。
舉例來說:作為班長的小明需要讓小紅做一件事,但前提要給小紅(用語言)傳達一個任務的資訊(指令),而這個語言必須是小紅能聽懂的,如果說的是方言或者其它語種,自然小紅會一臉懵,如果都是用國語交流(固定的格式和詞彙)那麼就能讓小紅明白小明的意思,小紅也就能成功的完成這件事情了(運作完成)。
程式設計語言是用來控制計算機的一系列指令(Instruction),它有固定的格式和詞彙(不同程式設計語言的格式和詞彙不一樣),必須遵守才能實作我們的目的。
編寫源代碼的過程就叫做程式設計(Program)。從事程式設計工作的人叫程式員(Programmer)。
什麼是C語言
C 語言是一種通用的、面向過程式的計算機程式設計語言。1972 年,為了移植與開發 UNIX 作業系統,丹尼斯·裡奇在貝爾電話實驗室設計開發了 C 語言。
C 語言是一種廣泛使用的計算機語言,它與 Java 程式設計語言一樣普及,二者在現代軟體程式員之間都得到廣泛使用。
C語言的特點
(1)是一種結構化語言
C語言的主要成分是函數。函數是C語言程式的基本結構子產品。
(2)語言簡潔緊湊,使用友善靈活
一共有32個保留字和9種控制語句,程式書寫自由。
(3)易于移植
C語言是面向過程的程式設計語言,使用者隻需要關注所被解決問題的本身,而不需要花費過多的精力去了解相關硬體,且針對不同的硬體環境,在用C語言實作相同功能時的代碼基本一緻,不需或僅需進行少量改動便可完成移植,這就意味着,對于一台計算機編寫的C程式可以在另一台計算機上輕松地運作,進而極大的減少了程式移植的工作強度。
(4)強大的處理能力
引入了結構、指針、位址、位操作、寄存器等功能,在許多方面具有彙編語言的特點,進而提高了語言的處理能力。
(5)可生成高品質、目标代碼執行效率高的程式
與其他進階語言相比,C語言可以生成高品質和高效率的目标代碼,故通常應用于對代碼品質和執行效率要求較高的嵌入式系統程式的編寫。
C語言的基本結構
- 頭檔案包含(一組#include指令)
- 使用者自定義函數聲明
- 主函數main()
- 若幹使用者自定義函數的定義
備注:
- 所有的 C 語言程式都需要包含 main() 函數。 代碼從 main() 函數開始執行。
- /* ... */ 用于注釋說明。
- printf() 用于格式化輸出到螢幕。printf() 函數在 "stdio.h" 頭檔案中聲明。
- stdio.h 是一個頭檔案 (标準輸入輸出頭檔案) , #include 是一個預處理指令,用來引入頭檔案。 當編譯器遇到 printf() 函數時,如果沒有找到 stdio.h 頭檔案,會發生編譯錯誤。
- return 0; 語句用于表示退出程式。
3種基本控制結構
- 順序結構
- 分支結構/選擇結構
- 循環結構
C語言字元集、辨別符與關鍵字
- 字元集
1) 字母
小寫字母a~z共26個,大寫字母A~Z共26個。
2) 數字
0~9共10個數字。
3) 空白符
空格符、制表符(Tab鍵)、換行符等統稱為空白符。空白符隻在字元常量和字元串常量中起作用。在其它地方出現時,隻起間隔作用,編譯程式對它們忽略不計。
是以在程式中使用空白符與否,對程式的編譯不發生影響,但在程式中适當的地方使用空白符将增加程式的清晰性和可讀性。
4) 标點和特殊字元
如加号 + 減号 - 分号 ; 逗号 , 等。
- 辨別符
由字母(A~Z, az)、數字(09)和下劃線(_)組成,并且首字元必須是字母或下劃線。
合法辨別符:
a, x, x3, BOOK_1, sum5
非法辨別符:
3s 不能以數字開頭
sT 出現非法字元
-3x 不能以減号(-)開頭
bowy-1 出現非法字元減号(-)
注意:
①不同編譯系統對辨別符長度都有自己的規定。
②在辨別符中,大小寫是有差別的,例如A1 和 a1 是兩個不同的辨別符。
- 關鍵字
關鍵字指具有特殊含義的辨別符,不能用作變量名、常量名或函數名來使用,隻能根據系統的規定使用。

auto聲明自動變量
short聲明短整型變量或函數
int聲明整型變量或函數
long聲明長整型變量或函數
float聲明浮點型變量或函數
double聲明雙精度變量或函數
char聲明字元型變量或函數
struct聲明結構體變量或函數
union聲明共用資料類型
enum聲明枚舉類型
typedef用以給資料類型取别名
const聲明隻讀變量
unsigned聲明無符号類型變量或函數
signed聲明有符号類型變量或函數
extern聲明變量是在其他檔案正聲明
register聲明寄存器變量
static聲明靜态變量
volatile說明變量在程式執行中可被隐含地改變
void聲明函數無傳回值或無參數,聲明無類型指針if條件語句else條件語句否定分支(與 if 連用)
switch用于開關語句
case開關語句分支
for一種循環語句
do循環語句的循環體
while循環語句的循環條件
goto無條件跳轉語句
continue結束目前循環,開始下一輪循環
break跳出目前循環
default開關語句中的“其他”分支
sizeof計算資料類型長度
return子程式傳回語句(可以帶參數,也可不帶參數)循環條件
C99 新增關鍵字
_Bool _Complex _Imaginary inline restrict
C11 新增關鍵字
_Alignas _Alignof _Atomic _Generic _Noreturn
_Static_assert _Thread_local
C語言的主要文法機關
常量:在程式運作過程中,其值不能被改變的量
-
直接常量(字面量) 可以立即拿來用,無需任何說明的量,例如:
整型常量:12、0、-3;
實型常量:4.6、-1.23;
字元常量:‘a’、‘b’。
- 符号常量 用辨別符代表一個常量。在C語言中,可以用一個辨別符來表示一個常量,稱之為符号常量。
說明:符号常量在使用之前必須先定義,其一般形式為:
#define 辨別符 常量
- 允許在一個類型說明符後,定義多個相同類型的變量。各變量名之間用逗号間隔。類型說明符與變量名之間至少用一個空格間隔。
- 最後一個變量名之後必須以“;”号結尾。
- 變量定義必須放在變量使用之前。一般放在函數體的開頭部分。