2023年c語言期末復習_第1頁
2023年c語言期末復習_第2頁
2023年c語言期末復習_第3頁
2023年c語言期末復習_第4頁
2023年c語言期末復習_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

任務一重點難點分析:了解程序和程序設計語言,c語言的發展和特點,初步掌握c語言的構成和格式特點。

C程序的構成(1)C程序由函數構成,函數是C程序的基本單位。每個C程序由一個或多個函數組成,其中每一個C程序都必須有,且只能有一個main函數。函數是C程序的基本單位。

(2)一個函數由函數首部和函數體兩部分構成函數首部涉及函數類型、函數名、函數的參數說明等。例如:intmax(intx,inty)函數體是函數首部下面用一對{}括起來的部分。一般涉及變量定義部分和語句執行部分。變量定義部分定義函數內部所用變量,語句執行部分規定函數所要執行的動作。(3)不管main函數在整個程序中的位置如何,C語言程序總是從main函數開始執行的,主函數執行完畢,整個程序結束運營。(4)書寫格式自由,一行可以寫多個語句,一個語句也可以寫在多行上,但每條語句或數據定義的最后必須有一個分號“;”,作為語句的結束標志。(5)可用“/*……*/”對C程序中的任何部分作注釋。(6)預解決命令通常應放在源文獻或源程序的最前面。(7)VisualC++6.0是集編輯、編譯鏈接和執行于一體的軟件。(8)C語言源文獻的擴展名是.c。任務二本章重點:掌握變量的定義,掌握各種運算符的特點及表達式的對的引用以及各種數據類型之間的互相轉換。本章難點:各種數據類型的存儲形式、互相轉換及各種表達式的對的引用1數據類型

C語言中提供了豐富的數據類型,其中整型、實型和字符型是基本數據類型,通過基本數據類型可再構造其他更復雜的數據類型。1.1標記符

標記符:用來標記變量名、符號常量名、函數名、數組名、類型名、文獻名的有效字符序列。

C語言規定標記符只能由字母、數字、下劃線三種字符組成,并且第一個字符必須是字母或下劃線,同時C語言嚴格區分大小寫。標記符分三類:關鍵字、預定義符和用戶標記符1.2變量注意:變量名、變量值、變量存儲空間(變量內存單元)三者的區別與關系1.變量的定義

變量必須先定義再使用。

【格式】:數據類型

變量名列表;2.變量的賦值

即將某一數據存入到變量的內存單元中。數據稱為變量值。1.3常量

常量分為:直接常量和符號常量1.直接常量

直接在程序中使用的常量,根據字面意義可進行區分。2.符號常量

【定義格式】#define

符號常量標示符

常量值

例:#define

PI

3.14

注意:符號常量與變量不同,它的值在其作用域內不能改變,也不能再被賦值。

使用符號常量的好處是:含義清楚;能做到“一改全改”。2.整型數據2.1整型常量

C語言中,整型常量用來表達數學中的整數,可以用十進制、八進制或十六進制的形式表達,但沒有二進制表達形式。2.2整型變量1.分類歸納起來共6類(注意分派的字節數),即:

有符號基本整型

[singned]int

有符號短整型

[singned]short[int]

有符號長整型

[singned]long[int]

無符號基本整型

[unsigned]int

無符號短整型

[unsigned]short[int]

無符號長整型

[unsigned]long[int]2.整型數據的存放形式

C語言規定一個有符號整數在內存中是以補碼形式存放的。3.整型數據的溢出

在應用中根據實際情況來選擇數據類型,否則不能對的表達。3實型數據3.1實型常量

C語言中,實型常量用來表達帶有小數點的實數,有兩種表達形式:(1)

十進制小數形式:如,4.6、-1.23等(2)

指數形式:由尾數、字母e或E、指數三部分組成;如:3.25E23.2實型變量1.分類:單精度(float)、雙精度(double)、長雙精度(longdouble)2.實型數據的舍入誤差

使用時注意不同類型的有效位問題,避免出現舍入誤差4字符型數據4.1字符型常量

C語言規定用單引號定界的單個字符,及單引號定界的轉義字符是字符常量。

注意:轉義字符仍然代表一個字符。4.2字符型變量

一個字符型變量在內存占用一個字節的空間,存放的是該字符的ASCII碼。4.3字符型數據與整型數據的混合運算

因字符型數據內存存放的是該字符的ASCII碼表現形式與整型數據相似,所以C規定兩者可以混合運算。4.4字符串常量

C語言中用雙引號括起來的多個字符。

C語言規定:存放字符串時,為其分派的存儲空間比其實際字符個數多1,用于存放串結束標志字符‘\0’。所以:‘a’在內存中占1個字節;”a”在內存中占2個字節。5運算符和表達式

掌握:各種運算符的功能、對運算對象的規定、優先級別和結合性5.1基本算術運算和表達式1.基本算術運算符

涉及:+(加)、-(減)、*(乘)、/(除)、%(求余)+(正號)、-(負號)

注意:(1)

/:參與運算的兩個運算對象假如都是整數,則結果取整,例:5/2的值是2

假如參與運算的運算對象中有實型數據,則結果為實型,例5.0/2的值是2.5

(2)

%:規定參與運算的兩個運算對象必須是整型2.算術表達式:運算對象通過運算符連接起來的式子成為表達式,表達式值的含義。3.運算符的優先級:(詳見教材附錄)

由高到底依次是:(+、-)正負號運算同級、%、(/、*)同級、(+、-)同級5.2自增、自減運算符

1.++、--是單目運算,只能對變量進行自增1或自減1的運算

2.注意++、--作為前綴(先變后用)或后綴(先用后變)的區別

3.其結合性是右結合性5.3強制類型轉換

【格式】(類型名)(表達式)注意表達式左右括號的作用

【功能】將表達式的值強制轉換成前面括號中規定的類型

例:(float)(5/2)的值是2.0

(float)5/2的值是2.5任務三本章重點:掌握C語言常用的輸入/輸出函數以及順序結構程序設計的一般方法。1.順序結構程序概述

順序結構程序是指程序中的語句完全按照它們的排列順序執行。一般由四個部分組成:定義變量部分;已知變量賦值或輸入部分;未知變量求值部分;輸出結果部分。2.順序結構程序的編寫方法,與求解物理題很相似。變量相稱于物理量,有幾個物理量就定義幾個變量。并明確哪些變量是已知的,哪些變量是未知的。給出已知變量的值。若已知變量有明確的值,則用賦值語句給出;否則用輸入語句獲得。根據已知變量與未知變量的關系,用賦值語句求得未知變量的值。輸出求得的未知變量的值。3.C語句的分類賦值語句賦值語句是在賦值表達式加上分號構成的表達式語句。其一般形式為:變量=表達式;,功能是把表達式的值賦給變量。賦值語句拓展之后的一般形式為:變量=變量=…=表達式;。在變量說明中給變量賦初值和賦值語句有些不同,給變量賦初值是變量說明的一部分,在編譯的時候執行,賦初值后的變量與其后的其他同類型變量之間仍必須用逗號間隔,而賦值語句則必須用分號結尾。(2)

復合語句

把多個語句用“{}”括起來組成一個語句稱復合語句。在程序中應把復合語句當作是單條語句。空語句4.數據的輸入輸出C語言自身不提供輸入輸出語句,輸入輸出語句是由某些庫函數實現。數據的輸出單字符輸入函數putchar一般形式:putchar(字符表達式);。所在頭文獻:stdio.h.功能:向終端輸出一個字符(即可以是可顯示的字符,又可以是控制字符或其他轉義字符)。格式輸入函數printf格式:printf(格式控制,輸出項列表);,輸出項列表可以不需要。所在頭文獻:stdio.h.功能:按照用戶指定的格式向系統隱含的輸出設備輸出若干個任意類型的數據。數據的輸入單字符輸入函數getchar一般形式:getchar();。所在頭文獻:stdio.h.功能:從系統隱含的輸入設備輸入一個字符,只能接受一個輸入,假如有多個輸入,只有第一個有效。getchar的返回值為輸入的字符。格式輸入函數scanf格式:scanf(格式控制,地址項列表);。所在頭文獻:stdio.h.功能:按格式控制所指的格式從標準輸入設備輸入數據并賦給指定的變量。任務四本章重點:掌握關系表達式、邏輯表達式的用法,if語句、switch語句的基本用法和語法格式,各種數據類型之間的互相轉化,以及選擇結構程序設計的基本方法。4.1關系表達式與邏輯表達式1、C語言中的關系運算符

①<(小于)

②<=(小于或等于)

③>(大于)④>=(大于或等于)

⑤==(等于)

⑥!=(不等于)2、關系表達式和關系表達式的值

由關系運算符組成的表達式稱為關系表達式。關系表達式的值是一個邏輯值,即“真”或“假”。在C語言中,以1代表“真”。以0代表“假”。3、C語言中的邏輯運算符

①&&(邏輯“與”)

②||(邏輯“或”)

③!(邏輯“非”)4、邏輯表達式和邏輯表達式的值

由邏輯運算符和運算對象組成的表達式稱為邏輯表達式。邏輯表達式的運算結果只有兩種:1(“真”)或0(“假”)。應當注意,在判斷一個量是否為“真”時,卻是以非0代表“真”,以0代表“假”。4.2if語句1、含else子句的if語句語句形式:

if(表達式)

語句1

else

語句2執行過程:

先計算if后面圓括號中的表達式的值,假如表達式的值為非零,執行if子句,然后跳過else子句,去執行if語句后的下一個語句;假如表達式的值為零,跳過if子句,去執行else子句,接著去執行if語句后的下一個語句。2、不含else子句的if語句語句形式:if(表達式)

語句執行過程:

先計算if后面圓括號中的表達式的值,假如表達式的值為非零(“真”),則執行其后的if子句,然后執行if語句后的下一個語句;假如表達式的值為零(“假”),則跳過if子句,直接執行if語句后的下一個語句。

3、嵌套的if語句

if子句和else子句中可以是任意合法的C語句,當然也可以是if語句,通常稱此為嵌套的if語句。內嵌的if語句既可以嵌套在if子句中,也可以嵌套在else子句中。

在書寫嵌套的if語句時,為了提高程序的可讀性盡量按層縮進的書寫格式來寫自己的程序。

值得注意的是在執行嵌套的if語句的過程中,要特別注意if和else的匹配問題,else要與其上離它最近的未匹配的if來匹配。4.3混合運算與強制類型轉換

整型、實型、字符型數據間可以混合運算,在進行運算時,不同類型的數據要先轉換成同一類型,然后進行運算。

不同類型的數據進行運算時,可以運用強制類型轉換運算符將一個表達式轉換成所需類型。其一般形式為:

(類型名)(表達式)4.4switch語句

switch語句的一般形式:

switch(表達式)

{case常量表達式1:語句1

case常量表達式2:語句2

case常量表達式n:語句n

default:語句n+1}執行過程:

當執行switch語句時,一方面計算緊跟其后的括號中的表達式的值,然后在switch語句體內尋找與該值吻合的case標號,假如有與該值相等的標號,則執行該標號后開始的各語句,涉及在其后的所有case和default中的語句,直到switch語句體結束。假如沒有與該值相等的標號,并且存在default標號,則從default標號后的語句開始執行,直到switch語句體結束。假如沒有與該值相等的標號,且不存在default標號,則跳過switch語句體,什么也不做。4.5拓展:條件表達式1、條件表達式

形式:

表達式1?表達式2:表達式3

由條件表達式組成的賦值語句事實上就是一個if-else語句的簡寫。因此,若在if-else語句中,當表達式為“真”或“假”時,都只執行一個賦值語句,且給同一個變量賦值時,均可以用簡樸的條件表達式來解決。任務五本章重點:

進一步掌握各種循環語句的要點和使用方法。

進一步掌握break和continue語句在循環語句中的作用。

可以靈活地運用各種循環語句進行綜合程序設計基本知識點循環語句是指在滿足指定的條件時,反復執行某個語句。反復執行的語句既可以是單個語句,也可以是復合語句。循環語句有while、do-while和for等幾種類型1.

while循環

語句一般格式while(表達式)循環體語句注意:先判斷循環條件再執行循環,假如循環條件不滿足,循環體也許一次都不執行。2.

dowhile循環

語句一般格式do

循環體語句while(表達式);注意:先執行循環體后判斷循環條件,假如循環條件不滿足,循環體至少執行一次。3.

for循環語句一般格式

for(表達式1;表達式2;表達式3)語句注意:

(1)三個表達式執行得先后順序,三個表達式的書寫格式,中間用;間隔。

(2)循環體有多句,用復合語句描述。4.

break語句與continue語句注意:⑴break終止本層循環,跳出循環體。

⑵continue跳過本次循環體下面的語句,進入下一次循環。5.

三種循環語句的比較

(1)for和while語句先判斷循環條件后執行循環體,do-while語句先執行循環體后再判斷循環條件。

(2)while和do-while語句的條件表達式只有一個,for語句有3個。

(3)while、do-while、for可以互相替換使用。

(4)while語句多用于不需要賦初值的或者循環次數不擬定的情況。for語句多用于要賦初值或者循環次數固定的情況。do-while語句多用于至少要執行一次的循環控制。

(5)循環語句可以嵌套,循環可以并列,但不能交叉。

本章學習難點1.

注意循環中變量的初始化2.

注意書寫錯誤導致的死循環任務六本章重點、難點:C語言不允許對數組的大小做動態定義,即數組的大小不依賴于程序運營過程中變量的值。數組元素的下標:C語言中數組元素下標的下限是固定的,總是為0;程序在執行過程中并不自動檢查數組元素的下標是否越界。數組在內存中的存放形式當程序中定義了數組之后,系統將為數組在內存中分派一段連續的存儲空間來存儲數組元素。對于一維數組來說,數組元素以下標從小到大的順序依次存放于內存中。對于二維數組來說,邏輯上可以把它們當作是一個矩陣結構,數組元素在內存中的排列是按照行優先原則。數組名記錄了數組在內存中的首地址,其值不能改變。除字符數組外,不能直接使用數組名對數組進行整體的輸入或輸出。數組:由若干類型相同的數據按一定順序存儲所形成的有序集合。用某個名字標記這個集合,這個名字稱為數組名。構成數組的每個數據項稱為數組的元素,同一數組中的元素必須具有相同的數據類型。

6.1

一維數組的定義和引用6.1.1一維數組的定義定義一維數組的一般形式:數據類型說明符數組名[常量表達式];6.1.2一維數組元素的引用數組元素是組成數組的基本單元。數組元素也是一種變量,其標記方法為數組名后跟一個下標。下標表達了元素在數組中的順序號。數組元素的一般形式為:數組名[下標]6.1.3一維數組的初始化初始化的一般形式為:

類型說明符數組名[常量表達式]={值,值……值};其中在{}中的各數據值即為各元素的初值,各值之間用逗號間隔。C語言對數組的初始化有以下幾點規定:可以只給部分元素初始化。當{}中值的個數少于元素個數時,只給前面部分元素賦值。例如:

inta[10]={0,1,2,3,4};表達只給a[0]~a[4]5個元素賦值,而后5個元素自動賦0值。只能給元素逐個賦值,不能給數組整體賦值。例如給十個元素所有賦1值,只能寫為:

inta[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:

inta[10]=1;如給所有元素賦值,則在數組說明中,可以不給出數組長度。例如:

inta[5]={1,2,3,4,5};可寫為:

inta[]={1,2,3,4,5};6.2二維數組6.2.1二維數組的定義二維數組定義的一般形式數據類型說明符

數組名[常量表達式1][常量表達式2];其中“常量表達式1”表達二維數組的行數,“常量表達式2”表達二維數組的列數。6.2.2二維數組元素的引用二維數組的元素也稱為雙下標變量,其表達的形式為:

數組名[下標][下標]其中下標應為整型常量或整型表達式。6.2.3二維數組的初始化

給二維數組的初始化重要有以下幾種方式。1.分行給二維數組賦初值例如:inta[2][3]={{1,2,3},{4,5,6}};2.按數組元素在內存中排列的順序對各元素賦初值例如:inta[2][3]={1,2,3,4,5,6};3.給部分元素賦初值例如:inta[2][3]={{1},{4}};4.假如對所有元素都賦初值,則定義數組時行長度可以省略,但列的長度不能省。

例如:inta[][3]={1,2,3,4,5,6};6.3字符數組與字符串6.3.1關于字符串C語言規定:字符串的末尾必須有'\0'字符,即'\0'字符為字符串結束標志。'\0'是一個轉義字符,它的ASCII碼值為0。一個字符數組中可以存放若干個字符。字符數組除了可以存放字符型數據外還可以存放字符串。6.3.2字符數組的定義一般形式:char數組名[數組長度]6.3.3字符數組的初始化1.用字符常量賦初值例如:charc[10]={'I','','a','m','','h','a','p','p','y'};則c[0]='I',…,c[9]='y'。c數組中存放的是10個字符型數據(涉及空格字符)。需要注意:當所賦初值的個數超過數組的長度時系統報錯;當所賦初值的個數小于數組的長度時,剩余的元素系統自動賦予'\0',此時,可以將該數組看做是一個存放字符串的數組;對靜態字符數組未被賦值的元素系統自動將其賦值為'\0'。2.用字符串常量賦初值C語言中,字符數組最常見的用法是用來解決字符串。用字符串常量來初始化字符數組重要有以下兩種方法:charstr[10]={"astring"};或charstr[10]="astring";需要注意:當用字符串常量來初始化字符數組時,數組的長度至少要比字符串中的字符個數多1,所多余的一個元素用來存放字符串的結束標志'\0'。例如要存放字符串”Hello”,則需要將字符數組的長度至少設為6。當然也可以使用二維數組來存放字符串,例如:chara[3][10]={"china","Japan","USA"};表白a數組有三行,每行存放一個字符串。注意:此時的花括號不能省略。3.初始化時長度的省略在給數組初始化時,也可以省略數組的長度,系統自動根據字符個數計算出數組的長度。例如:chars[]="InputThePassword";此時由于s數組中存放的是一個字符串,而字符串中隱具有結束標記'\0',所以系統自動確認s數組長度為18。再例如:charch[]={'s','t','r','i','n','g'};此時ch數組長度為6。6.3.4字符數組的輸入輸出1.字符數組的輸出對字符數組,其輸出控制字符有兩種"%c"和"%s"。%c逐個字符輸出字符;%s一次輸出整個字符串。2.字符數組的輸入

字符數組的輸入,假如使用scanf函數,其輸入格式控制字符可以有兩種形式,即:"%c"和"%s"。%c逐個字符輸入;%s一次輸入整個字符串。6.3.5字符串解決函數

C系統提供的字符串解決函數一般放string.h頭文獻中,所以若程序中調用字符串解決函數時,應在程序的開始應當寫#include"string.h"預解決命令。1.字符串輸出函數puts()函數原型:puts(str)功能:輸出一個字符串,輸出時將'\0'置換成'\n',因此,輸出字符串后自動換行。2.字符串輸入函數gets()函數原型:gets(str)功能:從鍵盤接受一個字符串直到回車鍵為止,將接受的字符串存入str數組中。3.字符串連接函數strcat()函數原型:strcat(str1,str2)功能:連接兩個字符串,把str2中的字符串連接到str1字符串的后面,結果放在str1數組中。注意:字符數組str1必須足夠大,以便能容納連接后的新字符串。4.字符串復制函數strcpy()函數原型:strcpy(str1,str2)功能:將str2中的字符串復制到str1數組中。注意:字符數組str1必須足夠大,以便能容納符串str2的內容。5.字符串比較函數strcmp()函數原型:strcmp(str1,str2)功能:將str1和str2中的兩個字符串自左向右按照各字符的ASCII碼值逐對進行比較,直到出現不同的字符或碰到'\0'為止。6.求字符串長度函數strlen()調用格式:strlen(str)功能:測試字符串長度。函數值返回值是str中不涉及'\0'的字符個數。說明:str可以是存放字符串的字符數組名或字符串常量。任務七本章重點:用戶自定義函數的定義、調用、聲明及返回;函數調用時的參數傳遞;函數的遞歸調用;變量作用域與存儲類別。本章難點:函數遞歸調用、變量存儲類別。7.1庫函數

庫函數是由C語言編譯系統預先定義好的函數,用戶可直接調用。

使用庫函數的注意事項:1.

熟知庫函數的功能2.

合理設立庫函數的參數3.

注意返回值的使用4.

程序開頭應用#include包含與該庫函數相關的頭文獻(參見教材附錄)7.2用戶函數的定義與調用

1.函數定義的一般形式

【格式】

類型標記符

函數名(形式參數表)/*形式參數可以沒有,稱為無參函數*/

{

函數聲明部分;

函數語句部分;

}

一個函數即相應一定功能,假如程序中需要執行函數所完畢的功能則需對函數進行調用,

且可進行多次調用。若一個函數A調用函數B,則稱函數A為主調函數,函數B為被調函數。

2.函數的調用

(1)【格式】函數名(實參列表)

(2)調用方式:獨立函數語句:函數調用單獨作為一個語句使用。函數表達式:函數調用出現在一個表達式中,規定函數必須返回一個擬定值。函數參數:函數調用作為另一個函數的實參,規定函數必須返回一個擬定值。7.3函數的參數和返回值

1.函數參數

實參:是調用被調函數時所使用的參數。

形參:是定義被調函數時所使用的參數。

2.實參與形參間的關系

(1)實參可以是常量、變量或表達式;形參必須是變量。

(2)實參與形參的類型、個數應一致,且一一相應。

(3)函數調用時,將實參值相應傳遞給形參,而形參有任何變化不會反傳實參。即值的單向傳遞。

3.函數的返回值函數的返回值是函數調用的結果,通過return語句帶回主調函數。函數類型決定函數返回值的類型,假如沒有返回值則函數類型應定義為空類型(viod)。函數返回時總是返回到主調函數的調用處。7.4函數原型

C語言規定在主調函數中要對被調函數進行聲明,即函數原型。

【格式】函數類型

函數名(參數類型1

參數名1,參數類型2

參數名2,……);

函數類型

函數名(參數類型1,參數類型2,……);

但以下三種情況允許在主調函數中缺省對被調函數的聲明:(1)

被調函數位置在主調函數的前面;(2)

被調函數的函數類型為int或char;(3)

函數聲明在所有函數之前;7.5函數的遞歸調用

一個函數直接或間接地調用它自身,稱此函數為遞歸函數,遞歸函數的調用稱為遞歸調用。遞歸函數在設立時應有一個明確的結束遞歸的條件。7.6變量的作用域和生存期

7.6.1.變量的作用域

1.局部變量:函數內部定義的變量,稱為局部變量。僅在函數范圍內有效。

2.全局變量:函數外部定義的變量,稱為全局變量。從定義處開始,到程序結束有效。

注意:假如在函數中局部變量與全局變量重名則屏蔽全局變量,讓局部變量起作用。

7.6.2變量的存儲類別

C語言程序中的變量,按照其存儲方式的不同決定了其不同的生存期。1.自動局部變量與靜態局部變量的區別:(1)分派存儲空間不同:自動局變分派在動態存儲區中,函數調用結束釋放空間;靜態局變分派在靜態存儲區中,函數調用結束空間不釋放。(2)

函數中自動局變初始化,則在每次調用函數時都重新分派空間且初始化;而靜態局變初始化僅在程序編譯時初始化一次,下次調用函數時保存上次調用結束時的值。2.全局變量的存儲類別

(1)用extern聲明全局變量

擴展全局變量的作用域。

(2)用static聲明全局變量限定全局變量的作用域。任務八重點和難點分析:本章介紹了號稱“C語言精華”的重要概念——指針及其使用技術。指針是C程序中概念最復雜、使用最靈活而初學者最容易犯錯的而解決難點的關鍵在于學生切實理解各種形式指針的概念及其區別。1.變量的指針和指向變量的指針變量就是變量的地址和用來存放變量地址的地址變量。1)指針變量的定義

形式:類型標記符*標記符如:int*pointer;2)指針變量的引用兩個有關的運算符:

&取地址運算符&a就代表變量a的地址

*指針運算符*a就代表變量a的值2.數組的指針和指向數組的指針變量數組的指針指數組的起始地址,數組元素的指針指數組元素的地址。1)指向數組元素的指針變量的定義與賦值

定義和指向變量的指針變量定義相同,c規定數組名代表數組的首地址,即第一個數組元素地址。2)通過指針引用數組元素我們通常引用數組元素的形式是a[i],假如用指針可以這樣引用,*(a+i),或定義一個指針變量p,將數組a的首地址賦給p,p=a;然后用*(p+i)引用。3)數組名作函數參數形參數組和實參數組之間并不是值傳遞,而是共用同一段地址,所以在函數調用過程中假如形參的值發生變化,則實參的值也跟著變化。3.字符串的指針和指向字符串的指針變量1)字符串的表達形式

c中字符串有兩種表達形式:一種是數組:charstring[]="Ilovec!";

一種是字符指針:

char*str="Ilovec!";2)字符串指針作函數參數

事實上字符串指針就是數組的首地址。3)字符指針變量與字符數組的區別

①字符數組由若干元素組成,每個元素存放一個字符,而字符指針變量只存放字符串的首地址,不是整個字符串

②對數組初始化要用static,對指針變量不用。

③對字符數組賦值,只能對各個元素賦值,不能象下面這樣:

charstr[14];

str="Ilovec!";

對指針變量可以,

char*str;

str="Ilovec!";

④數組在定義和編譯時分派內存單元,而指針變量定義后最佳將其初始化,否則指針變量的值會指向一個不擬定的內存段,將會破壞程序。

⑤指針變量的值是可以改變的,而字符數組名所代表的字符串首地址卻是不能改變的。4.函數的指針和指向函數的指針變量

一個函數在編譯時被分派一個入口地址,這個入口地址就稱為函數的指針。函數名代表函數的入口地址,這一點和數組同樣。我們可以用一個指針變量來存放這個入口地址,然后通過該指針變量調用函數。5.返回指針值的函數

一個函數可以帶回一個整型值、字符值、實型值等,函數還可以帶回一個指針型的數據,即地址。這種函數的定義形式如下:類型標記符*函數名(參數表)如:int*a(x,y)返回一個指向整型的指針6.指針數組指針數組無疑就是數組元素為指針,定義形式為:類型標記*數組名[數組長度]如:int*p[4],指針數組多用于存放若干個字符串的首地址。7定義結構體類型與結構體變量

7.1結構體類型的定義

了解結構體與數組的區別,同一數組中各元素的類型是一致的,而同一結構體

員的類型可以不同,且需要根據實際情況定義結構體類型,是一種構造類型。

結構體類型定義格式:

sturct

結構體名

{

數據類型

成員名1;

數據類型

成員名2;

……

數據類型

成員名n;

};

結構體類型是一種構造類型,系統并不為其分派存儲單元。

7.2結構體類型變量的定義

定義了結構體類型后可以再定義具有該類型的變量,此時系統才為結構體變量分派存儲單

元,分派的存儲單元數是各成員所占空間之和。定義結構體變量一般有三種形式:(1)先定義結構體類型,再定義該類型的變量

struct

結構體名

{成員表列

};

struct

結構體名

變量名表列;

(2)定義結構體類型的同時定義結構體變量。

struct

結構體名

{

成員表列

}變量名表列;

(3)直接定義結構體變量。

struct

{

成員表列

}變量名表列;7.2結構體變量的引用和初始化

7.2.1

引用形式:結構體變量名.成員名

注意:除同類型結構體變量間可整體賦值外,其余情況需逐個引用結構體變量的各

成員;結構體類型可嵌套定義,則只能引用最低檔的成員。

7.2.2

定義變量時賦初值,用大括號將各成員值括起來,各成員值之間用逗號隔開。7.3結構體指針

指向結構體變量的指針

定義一個結構體變量stu和一個同類型的指針變量p,且p=&stu,則可以通過p

訪問結構體中的各個成員。

一般形式:(*結構體指針變量).成員名

結構體指針變量->成員

任務九本章的重點:C文獻的概念,文獻類型指針,文獻的打開和關閉,文獻的讀寫和定位技術。難點是:C文獻的概念,常用讀寫函數。

1.文獻的相關概念

所謂“文獻”是指一組相關數據的有序集合。這個數據集有一個名稱,叫做文獻名。文獻名由兩部份組成即主名和擴展名。文獻通常是駐留在外部介質(如磁盤等)上的,在使用時才調入內存中來。從不同的角度可對文獻作不同的分類。從用戶的角度看,文獻可分為普通文獻和設備文獻兩種。2.文獻指針文獻的重要操作有兩種即讀文獻(從文獻中讀取數據)和寫文獻(往文獻中存儲數據)。在C語言中對文獻進行各種操作通過文獻指針來實現。定義說明文獻指針的一般形式為:

FILE*指針變量標記符;3.文獻的打開與關閉文獻在進行讀寫操作之前要先打開,使用完畢要關閉。在C語言中,文獻操作都是由庫函數來完畢的。在本章內將介紹重要的文獻操作函數。①

文獻的打開(fopen函數)

fopen函數用來打開一個文獻,其調用的一般形式為:FILE*fopen(char*filename,char*mode);

說明:filename是被打開文獻的文獻名,應包含文獻的途徑;②文獻關閉函數(fclose函數)

文獻一旦使用完畢,應用關閉文獻函數把文獻關閉,以避免文獻的數據丟失等錯誤。

fclose函數調用的一般形式是:

fclose(FILE*fp);4.文獻的讀寫對文獻的讀和寫是最常用的文獻操作。在C語言中提供了多種文獻讀寫的函數,下面將具體介紹。使用這些函數都規定包含頭文獻stdio.h。字符讀寫函數fgetc和fputc字符讀寫函數是以字符(字節)為單位的讀寫函數。每次可從文獻讀出或向文獻寫入一個字符。①

讀字符函數fgetc

fgetc函數的功能是從指定的文獻中讀一個字符,函數調用的形式為:

charch=fgetc(FILE*fp);

例如:

ch=fgetc(fp);②寫字符函數fputc

fputc函數的功能是把一個字符寫入指定的文獻中,函數調用的形式為:

fputc(charch,FILE*fp);

例如:

fputc(ch,fp);5.字符串讀寫函數fgets和fputs

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論