C語言小結

2021-09-27 03:26:27 字數 6181 閱讀 8251

第一章概述

1. c語言的特點

①語言簡潔、緊湊,使用方便、靈活。共有32個關鍵字,9種控制語句。

②運算子豐富,公有34種運算子。

③資料結構豐富,資料型別有:整型、實型、字元型、陣列、指標、結構體、共用體等。

④具有結構化的控制語句(如if…else、while、do…while、switch、for)

⑤語法限制不太嚴格,程式設計自由度大。

⑥允許直接訪問實體地址,能進行位(bit)操作,可以直接對硬體操作。

⑦生成目標**質量高,程式執行效率高。

⑧可移植性好。

2. c語言的用途

c雖不擅長科學計算和管理領域,但對作業系統和系統實用程式以及對硬體進行操作方面,c有明顯的優勢。現在很多大型應用軟體也用c編寫。

第二章資料型別、運算子與表示式

第二章資料型別、運算子與表示式

1. c的資料型別

c的資料型別包括:整型、字元型、實型或浮點型(單精度和雙精度)、列舉型別、陣列型別、結構體型別、共用體型別、指標型別和空型別。

2. 常量與變數

常量其值不可改變,符號常量名通常用大寫。變數其值可以改變,變數名只能由字母、數字和下劃線組成,且第乙個字元必須為字母或下劃線。否則為不合法的變數名。

變數在編譯時為其分配相應儲存單元。

3. 整型資料

整型常量的表示方法:十進位制不用說了,八進位制以0開頭,如0123,十六進製制以0x開頭,如0x1e。

整型變數分為:基本型(int)、短整型(short int)、長整型(long int)和無符號型。不同機器上各類資料所佔記憶體位元組數不同,一般int型為2個位元組,long型為4個位元組。

4. 實型資料

實型常量表示形式:十進位制形式由數字和小數點組成(必須有小數點),如:0.

12、.123、123.、0.

0等。指數形式如123e3代表123×10的三次方。

實型變數分為單精度(float)和雙精度(double)兩類。在一般系統中float型佔4位元組,7位有效數字,double型佔8位元組,15~16位有效數字。

5. 字元型資料

字元變數用單引號括起來,如'a','b'等。還有一些是特殊的字元常量,如'\n','\t'等。分別代表換行和橫向跳格。

字元變數以char 來定義,乙個變數只能存放乙個字元常量。

字串常量是由雙引號括起來的字串行。這裡一定要注意'a'和"a"的不同,前者為字元常量,後者為字串常量,c規定:每個字串的結尾加乙個結束標誌'',實際上"a"包含兩個字元:

'a'和''。

6. 數值型資料間的混合運算

整型、字元型、實型資料間可以混合運算,運算時不同型別資料要轉換成同一型別再運算,轉換規則:

char,short -> int -> unsigned -> long -> double <- float

7. 運算子和表示式

c運算子包括:

算數運算子

關係運算子( > < == >= <= != )

邏輯運算子

位運算子( << >>

賦值運算子( = )

條件運算子( ? : )

逗號運算子( , )

指標運算子( * & )

求位元組數( sizeof )

強制型別轉換(型別)

分量運算子( . -> )

下標運算子( [ ] )

其它運算子( 如函式呼叫運算子( ) )

自增自減運算子( ++ -- )注意:++i和i++的不同之處,++i使用i之前先使i加1,i++使用i之後,使i加1。

逗號表示式的求解過程:先求解表示式1,再求解表示式2,整個表示式的值是表示式2的值。

第三章最簡單的c程式設計

1.c的9種控制語句:

if() ~ else~

for()~

while()~

do~while()

continue

break

switch

goto

return

程式的三種基本結構:順序結構,選擇結構,迴圈結構

2.資料輸出

c語言不提供輸入輸出語句,輸入輸出操作是由c的庫函式完成。但要包含標頭檔案stdio.h。

putchar( ) 向終端輸出乙個字元

printf( )的格式字元:

① d格式符用來輸出十進位制整數

%d 按整型資料的實際長度輸出

%md 使輸出長度為m,如果資料長度小於m,則左補空格,如果大於m,則輸出實際長度

%ld 輸出長整型資料

② o格式符以八進位制形式輸出整數

③ x格式符以十六進製制形式輸出整數

④ u格式符用來輸出unsigned型資料,以十進位制形式輸出

⑤ c格式符用來輸出乙個字元

⑥ s格式符輸出乙個字串

%s 輸出實際長度字串

%ms 輸出的串佔m列,如果串長度小於m,左補空格,如果大於m,實際輸出

%-ms輸出的串佔m列,如果串長度小於m,右補空格,

%m.ns 輸出佔m列,但只取字串中左端n個字元並靠右對齊

%-m.ns m、n含義同上,靠左對齊,如果n>m,則m自動取n值

⑦ f格式符以小數形式輸出實數

%f 整數部分全部輸出,小數部分輸出6位

%m.nf 輸出資料共佔m列,其中有n位小數。如果數值長度小於m,左補空格

%-m.nf 同上,右補空格

⑧ e格式符以指數形式輸出實數

%e 系統指定6位小數,5位指數(e+002 )

⑨ g格式符輸出實數,根據數值大小,自動選f格式或e格式

3.資料輸入

getchar( ) 從終端輸入乙個字元

scanf( 格式控制,位址列表) 標準c scanf中不使用%u,對於unsigned型資料,以%d或%o或%x輸入。%後的*,用來跳過它相應的資料。輸入資料時不能規定精度如scanf( "%7.

2f", &a );是不合法的。

第四章邏輯運算和判斷選取控制

1. 關係運算子:

c提供6種關係運算子(> < <= >= == != )前四種優先順序高於後兩種。

2. if語句

c提供了三種形式的if語句

if(表示式) 語句

if(表示式) 語句1 else 語句2

if(表示式1) 語句1

else if(表示式2) 語句2

…else 語句n

3. 條件運算子

(a>b)?a:b 條件為真,表示式取值a,否則取值b

4. switch語句

switch(表示式)

第五章迴圈控制

第五章迴圈控制

1. 幾種迴圈語句

goto語句(現已很少使用)

while語句先判斷表示式後執行語句

do-while語句先執行語句後判斷表示式

for語句

2. break語句和continue語句

break語句用於跳出迴圈,continue用於結束本次迴圈。

第六章陣列

第六章陣列

1. 一維陣列

c規定只有靜態儲存(static)和外部儲存(extern)陣列才能初始化。給陣列初始化時可以不指定陣列長度。

2. 二維陣列

3. 字元陣列

部分字串處理函式

puts(字元陣列) 將乙個字串輸出到終端。

gets(字元陣列) 從終端輸入乙個字串到字元陣列,並且得到乙個函式值,為該字元陣列的首位址

strcat(字元陣列1,字元陣列2) 連線兩個字元陣列中的字串,陣列1必須足夠大。

strcpy(字元陣列1,字串2)  將字串2拷貝到字元陣列1中。

strcmp(字串1,字串2) 比較字串,相等返回0,字串1>字串2,返回正數,小於返回負數。

strlen(字元陣列) 求字串長度。

strlwr( 字串) 將字串中的大寫字母轉換成小寫

strupr( 字串)  將字串中的小寫字母轉換成大寫

以上是一些比較常用的字串處理函式。

第七章函式

1. 關於形參和實參的說明

① 在函式被呼叫之前,形參不佔記憶體

② 實參可以是常量、變數或表示式

③ 必須指定形參的型別

④ 實參與形參型別應一致

⑤ 實參對形參的資料傳遞是"值傳遞",即單向傳遞

2. 函式返回值

如果想讓函式返回乙個值,在函式中就要用return語句來獲得,在定義函式時也要對函式值指定型別,如果不指定,預設返回整型。

3. 函式呼叫

1)注意在函式呼叫時實參和形參的個數、型別應一一對應。對實參表求值的順序是不確定的,有的系統按自左至右,有的系統則按自右至左的順序。這一點要注意。

2)函式呼叫的方式:函式語句,函式表示式,函式引數

3)如果主調函式和被調函式在同一檔案中,並且主調函式在前,那麼一般要在主調函式中對被調函式進行說明。除非:(1)被調函式的返回值型別為整型或字元型(2)被調函式出現在主調函式之前。

4)對函式的說明和定義是不同的,定義是指對函式功能的確立,包括指定函式名,函式值型別,形參及其型別、函式體等。說明則只是對已定義的函式返回值型別進行說明,只包括函式名、函式型別以及乙個空的括弧,不包括形參和函式體。

5)c語言允許函式的遞迴呼叫(在呼叫乙個函式的過程中又出現直接或間接的呼叫該函式本身)。

4. 陣列作為函式引數

1)陣列元素作為函式引數和一般變數相同

2)陣列名作引數應該在主調和被調函式分別定義陣列,形引數組的大小可以不定義。注意:陣列名作引數,不是單向傳遞。

3)多維陣列作引數,在被調函式中對形引數組定義時可以省略第一維的大**明,但不能省略第二維或更高維的說明。

5. 區域性變數和全域性變數

從變數作用域角度分,變數可分為區域性變數和全域性變數。

1)內部變數(區域性變數)

在乙個函式內定義,只在函式範圍內有效的變數。

2)外部變數(全域性變數)

在函式外定義,可以為本檔案其它函式所共用,有效範圍從定義變數的位置開始

到本檔案結束。建議盡量少使用全域性變數,因為它在程式全部執行過程中都占用

資源,而且使函式的通用性降低了。如果在定義外部變數之前的函式要想使用該

外部變數,則應在該函式中用extern作外部變數說明。

6. 動態儲存變數與靜態儲存變數

從變數值存在的時間(生存期)角度來分,可分為靜態儲存變數和動態儲存變數。靜態儲存指在程式執行期間給變數分配固定的儲存空間,動態儲存指程式執行期間根據需要動態的給變數分配儲存空間。

c語言中,變數的儲存方法分為兩大類:靜態儲存類和動態儲存類,具體包括:自動的(auto),靜態的(static),暫存器的(register),外部的(extern)。

1) 區域性變數的儲存方式

函式中的區域性變數如不作專門說明,都之auto的,即動態儲存的,auto可以省略。區域性變數也可以定義為static的,這時它在函式內值是不變的。靜態區域性變數如不賦初值,編譯時系統自動賦值為0,動態區域性變數如不賦初值,則它的值是個不確定的值。

c規定,只有在定義全域性變數和區域性靜態變數時才能對陣列賦初值。為提高執行效率,c允許將區域性變數值放在暫存器中,這種變數叫register變數,要用register說明。但只有區域性動態變數和形式引數可以作為register變數,其它不行。

2) 全域性變數的儲存方式

全域性變數在函式外部定義,編譯時分配在靜態儲存區,可以在程式中各個函式所引用。多個檔案的情況如何引用全域性變數呢?假如在乙個檔案定義全域性變數,在別的檔案引用,就要在此檔案中用extern對全域性變數說明,但如果全域性變數定義時用static的話,此全域性變數就只能在本檔案中引用了,而不能被其它檔案引用。

3) 儲存類別小結

從作用域角度分,有區域性變數和全域性變數

區域性變數:自動變數,即動態區域性變數(離開函式,值就消失)

靜態區域性變數(離開函式,值仍保留)

暫存器變數(離開函式,值就消失)

(形參可定義為自動變數和暫存器變數)

全域性變數:靜態全域性變數(只限本檔案引用)

全域性變數(允許其它檔案引用)

從存在的時間分,有靜態儲存和動態儲存

動態儲存:自動變數(本函式內有效)

暫存器變數(本函式內有效)

形參靜態儲存:靜態區域性變數(函式內有效)

靜態全域性變數(本檔案內有效)

全域性變數(其它檔案可引用)

從變數值存放的位置分

靜態儲存區:靜態區域性變數

靜態全域性變數

全域性變數

動態儲存區:自動變數和形參

暫存器內:暫存器變數

C語言指標小結

輸出結果同上。指標變數位址加1 inti,pa,a pa a for i 0 i 9 i 輸出結果同上。2 陣列名與指標的區別 陣列名是指標常量而指標是指標變數,舉乙個例子。inti,pa,a pa a for i 0 i 9 i 輸出結果同上。這裡如果將pa換成a,那麼編譯就會出錯。原因pa是指標...

C語言精華小結

一 c語言結構 1 主函式用main作為函式名,每個c程式都必須包含且僅含乙個main函式,c程式的執行是從主函式中的第一句開始,到主函式中的最後依據結束 2 標頭檔案的引用 include或 include name.h 3 函式由函式首部和函式體組成 函式首部,即函式的第一行,包括函式名 函式型...

C語言程式設計小結精華

二級c語言程式設計模擬試題 1 8 下面程式的功能是統計從命令列上傳遞進來的第乙個引數 現字母個數。請填空完善程式。注 引數個數從0開始記數 include include void main int argcar 填空題答案 1 main函式 2 cos fabs x y sin fabs x f...