c程序設計教案_第1頁
c程序設計教案_第2頁
c程序設計教案_第3頁
c程序設計教案_第4頁
c程序設計教案_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《程序設計》教案

誨南軟件職業(yè)技本學浣

(2006-2007學年度第一學期)

教師姓名:李文大

系部:軟件工程系

授課專業(yè):軟件技術

授課班級:05軟件技術3班

目錄

課題01:6.0開發(fā)環(huán)境..................................................

課題02:數(shù)據(jù)類型、表達式、語句...................................................

課題03:數(shù)組.....................................................................

課題04:結構類型.................................................................

課題05:函數(shù)......................................................................

課題06:函數(shù)參數(shù)..................................................................

課題07:內聯(lián)函數(shù)與遞歸函數(shù)........................................................

課題08:函數(shù)重載..................................................................

課題09:指針.....................................................................

課題10:指針與數(shù)組、字符串指針..................................................

課題11:指針與函數(shù)...............................................................

課題12:指針與動態(tài)分配內存......................................................

課題13:引用.....................................................................

課題14:類與對象.................................................................

課題15:類的靜態(tài)成員與常量成員..................................................

課題16:友元.....................................................................

課題17:運算符重載...............................................................

課題18:繼承與派生...............................................................

課題19:派生關系中的二義性處理..................................................

課題20:虛基類...................................................................

課題21:多態(tài)性與虛函數(shù)...........................................................

課題22:模板.....................................................................

課題23:文件、流與的流類庫......................................................

課題24:插入與提取運算符的重載..................................................

課題25:磁盤文件

課題01:6.0開發(fā)環(huán)境

一、教學目標:

1.掌握6.0開發(fā)工具的選單、工具欄、項目、工作區(qū)等概念

2.掌握使用編寫控制臺應用程序

3.掌握使用進行程序調試

二、教學重點:

1.掌握6.0開發(fā)工具的選單、工具欄、項目、工作區(qū)等概念

三、教學難點:

1.使用編寫控制臺應用程序。

2.使用進行程序調試

四、課時安排:

2節(jié)課

五、教具準備:

多媒體教室

六、教學方法:

講授

七、教學過程:

(一)、復習導入

是公司推出的目前使用極為廣泛的基于平臺的可視化開發(fā)環(huán)境。6.0是在

以往版本不斷更新的基礎上形成的,由于其功能強大、靈活性好、完全可擴展以

與具有強有力的支持,在各種語言開發(fā)工具中脫穎而出,成為目前最為流行的語

言集成開發(fā)環(huán)境。

(二)、講授新課

1.開發(fā)環(huán)境概述

:板書或幻燈片演示下圖

★:6.0開發(fā)環(huán)境包括:

★標題欄

★工具欄

★選單

★項目工作區(qū)窗口

★輸出窗口

★狀態(tài)欄

★文檔窗

依次介紹各項功能,詳細介紹選單、工具欄、項目工作區(qū)。

2.簡單的控制臺應用程序

使用創(chuàng)建一個控制臺應用程序,使學生理解“工程”概念,熟悉項目的程序

框架,以與如何添加程序代碼、編譯、運行。

以下面程序為例,講述如何建立控制臺應用程序:

【例】

<>

(*IJ)

,,

0;

【運行結果】:

【例】利用投影演示P18例。

3.程序調試

在軟件開發(fā)過程中,大部分的工作往往體現(xiàn)在程序的調試上。調試一般按這

樣的步驟進行:

“修正語法錯誤一設置斷點一啟用調試器一控制程序運行一查看和修改變

量的值”

★修正語法錯誤

■I/試最初的任務主要是修正一些語法錯誤,比如:

■未定義或入合法的標識符

■數(shù)據(jù)類型或參數(shù)類型與個數(shù)不匹配。

★設置斷點

■用調試的斷點可以有以下類型:

■為之斷點

■數(shù)據(jù)斷點

■條件斷點

★啟用調試器

★6.0創(chuàng)建的項目,系統(tǒng)會自動為項目創(chuàng)建32版本的默認配置,選擇””

選單“”命令,就可以啟動調試器了。

★控制程序運行

可以通過''控制程序運行。

★查看和修改變量的值

在程序調試的時候會自動顯示““和“"兩個調試窗口,通過這兩個窗口可以查

看或修改當前運行程序的變量的值。

課題02:數(shù)據(jù)類型、表達式、語句

一、教學目標:

1.掌握程序結構、基本組成

2.掌握的基本數(shù)據(jù)類型、基本輸入/輸出

3.掌握運算符、表達式

4.掌握基本語句

二、教學重點:

1程序結構、基本組成

2基本數(shù)據(jù)類型、輸入輸出

三、教學難點:

I運算符、表達式

2基本語句

四、課時安排:

2節(jié)課

五、教具準備:

多媒體教室

六、教學方法:

講授

七、教學過程:

(一)、復習導入

是在20世紀80年代初期由貝爾實驗室設計的一種在C語言的基礎上增加了

而向對象支持的語言,她是目前應用最為廣泛的編程語言。今天我們來學習他的

基本結構、數(shù)據(jù)類型、運算符和表達式、基本語勻。

(二)、講授新課

1.程序結構

一個程序往往由預處理命令、語句、函數(shù)、變量和對象、輸入與輸出以與注

釋幾個部分組成。

★預處理命令

★包括:宏定義命令、文件包含命令和條件編譯命令

★語句

語句是組成程序的基本單元

★函數(shù)

一個程序是由若干個函數(shù)組成。一個程序中有且僅有一個主函數(shù).

★變量和對象

★是面向對象的語言,所以在中相比C語言多了對象,她是“類”的實例

★輸入輸出

程序中總是少不了輸入和輸出語句。

★注釋

注釋可以提高程序的不讀性、幫助程序員理解,在程序運行中不執(zhí)行。

★在編寫程序時,還要注意程序的書寫風格,要注意縮進和注釋。在編

寫程序時,標識符應該遵循以下原則:

★合法性

★有效性

★異讀性

2.基木數(shù)據(jù)類型

數(shù)據(jù)類型分為基本數(shù)據(jù)類型、派生類型以與復合類型3類?;緮?shù)據(jù)類型包

括:

以與上述類型的變種,包括

P29表2.1列出了的基本數(shù)據(jù)類型

★根據(jù)數(shù)據(jù)在程序中的可變性,我們將數(shù)據(jù)分為:

★常量

■整型常量

■浮點型常量

■字符常量

■字符串常置

■符號常量

★變量

■變量定義

■變量的初始化

要注意一個未初始化的變量不是沒有數(shù)值,而是取決于變量在系統(tǒng)中的存儲

形式,她可能是系統(tǒng)的默認值或無效值。

3.基本輸入、輸出

中是通過標準的輸入流和標準輸出流來實現(xiàn)數(shù)據(jù)的輸入輸出。

【舉例】

【舉例】

4,運算符和表達式

■用來記述運算的符號稱為運算符,按照操作數(shù)的個數(shù)可以分為:

■單目運算符

■雙目運算符

■三目運算符

■根據(jù)其功能可以分為:

■算術運算符

■賦值運算符

■關系運算符

■邏輯運算符

■位運算符

變量、常量通過一個或多個運算符組合起來就構成了表達式,比如有關系運

算符構成的表達式成為關系表達式。

■5.基本語句

■提供了如表達式語句、復合語句、選擇語句和循環(huán)語句等,滿足了結構

化程序設計所需要的3中基本結構。

■選擇語句

■條件語句

■開關語句

■循環(huán)語句

以上基本語句和C語言保持一致。

課題()3:數(shù)組

一、教學目標:

1.了解構造類型的意義

2.了解數(shù)組的概念

3.掌握一維數(shù)組、多維數(shù)組的定義

二、教學重點:

1.一維數(shù)組的定義

2.數(shù)組的基本操作

三、教學難點:

1.多維數(shù)組將維處理過程與多維數(shù)組的存儲

2.字符串數(shù)組的使用

四、課時安排:

2節(jié)課

五、教具準備:

多媒體教室

六、教學方法:

講授

七、教學過程:

(一)、復習導入

在計算機所處理的數(shù)據(jù)中,最常見的,也是最需要由計算機高速處理的數(shù)據(jù)

是成批出現(xiàn)的同一類型的數(shù)據(jù),語言中把這類數(shù)據(jù)稱為數(shù)組。例如:

?監(jiān)測系統(tǒng)在一段時間內獲得的檢測、采樣值,可能是型或型數(shù)

據(jù)的數(shù)組:

?一個管理系統(tǒng)的數(shù)據(jù)庫,可能是一系列結構類型(記錄)數(shù)據(jù)的序列;

?一幅電視圖像,可能是其每個像素的顏色與灰度值(整型數(shù))的二維陣列。

任何一種類型的一批數(shù)據(jù),都可以組成數(shù)組,例如型,型,型數(shù)據(jù)可以組成數(shù)

組;這些基本類型的派生類型(如型,型,型)的數(shù)據(jù),枚舉、結構、聯(lián)合類型

的數(shù)據(jù),以至由用戶或系統(tǒng)定義的類(類型)的對象,都可以組成數(shù)組。

(二)、講授新課

1.一維數(shù)組

由n個同一類型數(shù)據(jù)組成的一維序列,構成一維數(shù)組,一維數(shù)組的下標為0,…,

lo

1.一維數(shù)組的說明

任何一種已知類型數(shù)據(jù)都可說明為數(shù)組,數(shù)組說明的格式為:

〈類型名X數(shù)組名>[<元素數(shù)>]={<初值表>};

類型名:可以是基本類型名,基本類型的派生類型名,類名,枚舉類型名,

結構,聯(lián)合類型名(也可以是枚舉、結構聯(lián)合的類型說明)。關于指針數(shù)組將在下節(jié)說

明。還有數(shù)組類型的數(shù)組就是多維數(shù)組了,也將在下面介紹。

數(shù)組名:標識符,數(shù)組名有兩個附加作用:

(1)是表示數(shù)組元素的下標變量。如[2]表示數(shù)組的第三個元素。

(2)它還是一個指向數(shù)組的首元指針。

元素數(shù):一個正整數(shù),指出數(shù)組的元素個數(shù),或數(shù)組的大?。ǎ?。元素數(shù)要用方括號

括起來。方括號口不可缺省,元素數(shù)則有時可缺省,這時必須賦初值,系統(tǒng)按所賦的

初值個數(shù)確定數(shù)組的大小。

初值表:可缺省c是由花括號(,}括起來且用逗號'分開的初始化常

量值。例如:

[100],A[10][10],B[]={4,3,2};

[26];

[4]={(3.2,4.7),10.0,0.0)};

其中,數(shù)組[100]未賦初值。

數(shù)組A[10][10]為一個二維數(shù)組,未賦初值。

數(shù)組B□已賦初值,元素數(shù)為3。

數(shù)組[4]是用戶定義的類型的數(shù)組,數(shù)組有4個元素,其中前

兩個元素已賦初值,初值分別為(3.2,4.7),(0.0,0.0)o

2.數(shù)組的操作一一下標變量

語言未提供對于數(shù)組整體進行操作的運算符和運算。對于數(shù)組的操作是

通過對于其元素,即下標變量進行的。下標變量的格式為:

<數(shù)組名>[〈下標)]

下標:整數(shù),或整型表達式,其取值范圍為0?1數(shù)組元素總數(shù),例

如:

A[4];

共有四個下標變量:A[0],A[l],A[2],A[3]o

對于下標變量可進行下列操作。

(1)賦值??梢匀N方式進行:

①初始化:

A[4]={1,2,3);

相當于一次為A[0],A[l],A[2]賦值為1,2,3o

②賦值語句:

A[3]=4*A[l];

相當丁把4木2=8賦值A[3]。

③輸入語句:

>>A[0];

(0;i<4;)>>A[i];

后者可通過鍵盤操作,為數(shù)組的四個元素依次賦值。

(2)一般運算。

下標變量可與同一類型的一般變量一樣參加它所允許的運算。如:

A[0]A[2];

<<A[O]<<ZZ,Z<<A[1]*A[2];

等等。

下標也可以是一個表達式,如:

A[4]={1,2,3,4);

A[3]=A[A[2][1]]*4;

下標表達式應注意其值應保持在0?1范圍之內。

2.多維數(shù)組

若干同一類型的數(shù)據(jù)m列n行的矩陣,則可稱為二維數(shù)組,二維數(shù)組亦可視為一維數(shù)

組的數(shù)組。

A[m][n];

說明了一個二維數(shù)組,它有mXn個元素,它也可以視為由n個一維數(shù)組A[m]

組成的(一維)數(shù)組。類似地,還可以說明三維,四維數(shù)組,二維以上的數(shù)組統(tǒng)

稱為多維數(shù)組。

1.說明和初始化

多維數(shù)組的說明(以二維為例):

〈類型名X數(shù)組名>[<行數(shù)〉]卜列數(shù)>]

類型名:同前節(jié)說明。

數(shù)組名:同前節(jié)說明。

行數(shù):正整數(shù)。

列數(shù):正整數(shù)。

例如:

⑵⑶;

該二維數(shù)組共有2行3列,元素個數(shù)為2*3=60

在二維數(shù)組中,為數(shù)組賦初值的方式有:

a[2][3]={{1,2,3},{4,5,6));

亦可寫為:

a[2][3]={1,2,3,4,5,6);

二者效果是一樣的。系統(tǒng)將按逐行的次序順序為各元素賦值。其次序為:

a[0][0][0][l][0][2],

a[l][0][l][l][l][2]

對于三維以上的高維數(shù)組,其賦值方法是一樣的。

2.二維數(shù)組的操作

對于二維數(shù)組的操作,同樣是通過對其元素即下標變量的操作來進行的。

操作中應注意:

(1)注意下標表達式的取值范圍:

A[m][n];

則下標變量中i的值應在0?1之間,j的值應在0?1之間。

(2)當只有一個下標時:

A[i](0<=i<=1)

表示的是一個一維數(shù)組,其元素個數(shù)為n,這些元素可用下標變量:

A[i][0][i][l],-[i][l]

來表示。

(3)更高維的數(shù)組,其定義和操作類似。

3.數(shù)組與字符串

從表面上看,一個字符串就是一個字符數(shù)組,但在語言中,二者并不完全相

同,讀者在涉與到字符串處理時,必須注意。字符串是一個以串尾符、(了結尾的

字符類型數(shù)組。從下面的例子可看出其區(qū)別:

2[]=〃〃;

3[7]={%);

4[7]={'n」a」\01

這說明了四個字符型數(shù)組,它們是互不相同的。

課題()4:結構類型

一、教學目標:

1.了解結構類型的意義

2.掌握結構類型的定義與應用方法

3.掌握結構數(shù)組的使用方法

二、教學重點:

1.結構類型的定義

2.結構類型使用方法

三、教學難點:

1.結構數(shù)組的使用方法

四、課時安排:

2節(jié)課

五、教具準備:

多媒體教室

六、教學方法:

講授

七、教學過程:

(一)、復習導入

實際應用中往往需要把若干種不同類型的數(shù)據(jù)組合為一個導出類型,這就是

結構類型。數(shù)組是把若干相同類型的數(shù)據(jù)放在一起,結構則是把若干不同的數(shù)據(jù)

放在一起。例如,一個公司雇員的數(shù)據(jù)可能包括:

[20];

[11];

則我們如何處理這樣的數(shù)據(jù)呢?下面就讓我們來學習一種新的構造數(shù)據(jù)類型一

結構體。

(二)、講授新課

對公司雇員數(shù)據(jù)進行處理或檢索時,把它們組成結構類型會更方便:

[20];

[11];

語言中的結構是作為類似于類的概念處理的,這一點將在以后學習中說明,在本章結

構(以與聯(lián)合)類型僅作為一種構造數(shù)據(jù)類型。

I.結構類型與結構變量說明

結構類型說明的格式為:

〈類型名〉(〈成員表>};

類型名:標識符.

成員表:<類型>〈成員1>;<類型)<成員2>;...〈類型)〈成員n〉;

結構類型的變量說明的格式為:

[]<結構類型名〉〈變量名表》;

變量說明中的關鍵字可以省略(C語言中不可),變量名表與一般

變量說明一樣,其賦初始值的方法可從下面的例子中了解:

[20];

[111;

);結構類型的定義

12;變量12的說明

34二{''〃,2107.5,};

變量34(賦初值)的說明

結構類型與其變量的說明也可放在一起:

[20];

[11];

)12;

2.結構變量的引用和賦值

一個結構變量由若干分量組成,對結構分量的存取由圓點運算符實現(xiàn),例如,

在上例中,雇員1的姓名可表示為1,其號碼可表示為1。因此,為結構變量賦

值,除了在變量說明中賦初值(如為4賦初值)的方法外,還可以用賦值語句或

輸入語句為結構分量賦值的方法:

3八〃;

3=;

?3;

?3;

無論采用哪種方法為結構分量賦值,都必須保證類型一致。

語言還允許直接對結構變量賦值,卜面的賦值語句也是允許的:

1=4;

3=4;

一般,數(shù)組變量不能這樣直接賦值。

3.結構數(shù)組

結構類型的數(shù)據(jù)也可以組成數(shù)組,稱為結構數(shù)組。結構數(shù)組在許多實際應用問題

中的采用非常普遍,例如,通訊錄,學生成績單,商業(yè)銷售記錄,人事檔案,資料

登記表等等。下面的結構數(shù)組是一個公司的雇員檔案:

[20];

[11];

[100];

數(shù)組的每一個分量是一個雇員的檔案數(shù)據(jù)。

課題()5:函數(shù)

一、教學目標:

1.了解函數(shù)的作用、意義

2.掌握函數(shù)的說明、調用、返回

3.掌握函數(shù)的使用方法

二、教學重點:

1.函數(shù)的說明

2.函數(shù)的調用

三、教學難點:

1.函數(shù)返回

四、課時安排:

2節(jié)課

五、教具準備:

多媒體教室

六、教學方法:

講授

七、教學過程:

(一)、復習導入

函數(shù)概念是語言中最重要的概念之一,函數(shù)設計是程序設計的主要部分或實

質部分。函數(shù)在程序設計中的意義體現(xiàn)在四個方面。

(1)從歷史上說,函數(shù)的思想來源于子程序,(如語言中的子程序),把程序

中反復出現(xiàn)的相同或相近的程序改寫成子程序,可以大大縮短程序的長度。函數(shù)

實際上是參數(shù)化的子程序。

(2)從結構化程序設計()的觀點來看,函數(shù)絕不僅僅是為了縮短程序長度,更

重要的是通過函數(shù)設計,可以把整個程序要完成的整體的復雜的計算任務,分解

為一個個較小的,相對簡單的子任務。這種模塊化的程序易設計,易閱讀,易調

試,易維護,較少出錯。

(3)從運算的角度說、函數(shù)就是語言提供的由用戶定義的運算。運算符是系統(tǒng)

提供的運算,而函數(shù)是由用戶自己定義的運算。

(4)作為面向對象程序設計()語言的,以類為核心,類由數(shù)據(jù)和方法組成,方

法就是對數(shù)據(jù)的運算和處理,亦即類的函數(shù)成員。故函數(shù)設計同樣是的重要組

成部分。

(二)、講授新課

1.函數(shù)的說明

程序允許兩種函數(shù)說明語句的形式,我們把它們分別稱為函數(shù)原型(或

函數(shù)聲明)和函數(shù)定義。

[1].函數(shù)原型

函數(shù)原型(亦稱函數(shù)聲明)用來指出函數(shù)的名稱,類型和參數(shù),其格式為:

[〈屬性說明〉]〈類型〉〈函數(shù)名〉(〈參數(shù)表〉);

例如:

(a,b);

(&s,&t);

屬性說明:可缺省,一般可以是下面的關鍵字之一:,,,

等。

表示該函數(shù)為內聯(lián)函數(shù);

表示該函數(shù)為靜態(tài)函數(shù);

表示該函數(shù)為虛函數(shù);

表示該函數(shù)為某類。的友元函數(shù)。

其含義的細節(jié)在后面有關章節(jié)介紹。

類型:指函數(shù)的返回類型。C語言規(guī)定除了特別情形(()函數(shù)和類的構造函數(shù),析構

函數(shù))之外,所有函數(shù)都必須在說明中指出返回類型。一個函數(shù)可能有多個結果,不一

定都用返回值的方式輸出(還可通過全局變■,引用參數(shù)和指針等方式傳出)計算結果,

但函數(shù)調用作為一個表達式,該表達式的值則只能是函數(shù)的返回值。

函數(shù)名:一個標識符。

參數(shù)表:它可能為空,或〈類型〉〈參數(shù)名〉,〈類型〉〈參數(shù)名》…的

形式。

例如:()

(x)

(b)

其中,函數(shù)原型中的參數(shù)表可忽略參數(shù)名,如:

它們與函數(shù)原型(a,b);(&s,&t);是等價

的,事實上在編譯時,函數(shù)原型中的參數(shù)名是被忽略的,后者的參數(shù)表中的符

號'&\表示該參數(shù)為引用型參數(shù),用以區(qū)別于一般的賦值型參數(shù),其用法在下面

介紹。

[2].函數(shù)定義

函數(shù)定義與函數(shù)原型的主要區(qū)別是它還包括函數(shù)體,其格式為:

[〈屬性說明〉]〈類型〉〈函數(shù)名〉(〈參數(shù)表〉)〈函數(shù)體〉

屬性說明,返回類型,函數(shù)名與函數(shù)原型一致,參數(shù)表中不可省略參數(shù)名。

函數(shù)體:由{和}括起來的復合語句即程序塊。

5_1的最后12行就是一個函數(shù)定義。從函數(shù)說明語句的介紹,我們可以看到程序中各

種語句的分類(說明語句,表達式語句,控制語句和復合語句)并不是一個簡單的劃分

概念。函數(shù)定義本身是一種說明語句,但其函數(shù)體則是一個復合語句。而在函數(shù)體內部

又可能包含說明語句,表達式語句,控制語句和復合語句。

總之,這種分類和區(qū)分是明確的,但它們之間又有互相包含的關系。

2.函數(shù)調用

函數(shù)調用是已定義函數(shù)的一次實際運行,(與某類型的一個變量和后文中某類

的一個對象類似),函數(shù)調用是函數(shù)定義的一個“實例二

函數(shù)說明中的參數(shù)稱為形式參數(shù)(形參),函數(shù)調用中的參數(shù)稱為實際參數(shù)(實參),函

數(shù)調用一般出現(xiàn)在表達式中或獨立形成一個函數(shù)調用語句,例如:

=(一q/2+a)+(-q/2-a):

(a,b);

函數(shù)調用的兩要素是函數(shù)名和實參表:

〈函數(shù)名〉(〈實參表〉)

實參表中的參數(shù)的類型、個數(shù)、順序必須與函數(shù)說明的參數(shù)表(形參表)相一致。

賦值型的實參可以是一個表達式。在上節(jié)5」的。中兩次出現(xiàn)函數(shù)(x)調用,其具體

的調用實施過程如下:

(I)根據(jù)調用語句中的函數(shù)名0在整個程序中搜索同名函數(shù)定義;

(2)對實參數(shù)的參數(shù)個數(shù),類型,順序進行核對,判定是否與函數(shù)定義中的形參表對應

一致,在上例中只有一個浮點型參數(shù);

(3)根據(jù)參數(shù)的類型(值參數(shù)或引用參數(shù))進行值參數(shù)的值傳遞或引用參數(shù)的換名,在

上例中即是要把實參表達式的值計算出來賦給形參x;

(4)運行函數(shù)體代碼;

(5)返回調用點,并返回所要求的函數(shù)值,即返回計算結果的值。

3.函數(shù)的返回

函數(shù)的返回完成兩項任務:

(1)把運行控制從函數(shù)體返回到函數(shù)調用點。在上例中就是在計算

(2)之后再返回到語句:()+()的計算過程中。

(2)根據(jù)返回值要求,返向所需要的數(shù)據(jù)值。

函數(shù)的返回值有下面幾種情形:

1.返回類型

如果函數(shù)無值返回,應說明為類型。例如:

函數(shù)僅需完成打印和顯示工作,不需返回任何數(shù)據(jù),這類函數(shù)調用一般形成一

個函數(shù)調用語句。

未作類型說明的函數(shù),系統(tǒng)認為是類型函數(shù),應返回一整型值。

2.返回數(shù)值類型

最常見的函數(shù)是返回一個數(shù)值的函數(shù)。例如:

(a,b);

(x);

這類函數(shù)的調用表達式可以出現(xiàn)在表達式語句中。

當函數(shù)要返回的數(shù)值不止一個時,情況比較復雜,一般它可以以結構或類的形式,也

可以以結構,數(shù)組或對象指針類型方式實現(xiàn),這樣的實例在后面的章節(jié)可以見到。

3.返回引用類型

值返回方式是C和語言中唯一的返回方式,語言提供的引用返回概念是其特

有的一種很強的功能,當函數(shù)定義中把該函數(shù)說明為某類型的引用類型時,該

函數(shù)調用后返回的不單是值,而是包含返回值的變量(或對象)。由于返回引用

與引用類型有關,所以這樣的實例將在下節(jié)介紹。

課題06:函數(shù)參數(shù)

一、教學目標:

1.進一步了解函數(shù)的應用

2.了解函數(shù)參數(shù)

3.了解函數(shù)的值調用和引用調用

二、教學重點:

I.函數(shù)參數(shù)形式

三、教學難點:

I.函數(shù)值調用和引用調用

四、課時安排:

2節(jié)課

五、教具準備:

多媒體教室

六、教學方法:

講授

七、教學過程:

(一)、復習導入

函數(shù)的參數(shù)的設置和使用是函數(shù)設計中非常直要的部分。

(二)、講授新課

1.函數(shù)參數(shù)

語言允許函數(shù)無參,有一個或多個參數(shù),而且還支持不定個數(shù)參數(shù)的

函數(shù)。

(I)無參函數(shù):其函數(shù)說明為下列形式:

();輸出指定的數(shù)據(jù)

O;輸出變量X的值

用或空表示無參。

(2)一個或多個參數(shù):

多數(shù)函數(shù)有一個或多個確定的個數(shù)、確定的類型和順序的參數(shù),例如:

(n,*){…};對n元整形數(shù)組

進行排序

(a,b,c){…};

/*求三個實數(shù)中最大者。*/

等等。定義中應注意參數(shù)表的組成。因為在語言中,不同的函數(shù)是根據(jù)函

數(shù)名和參數(shù)表二者來區(qū)分的,只有二者完全一致才是同一函數(shù)。

(3)不定個數(shù)參數(shù):

有些應用問題中參數(shù)個數(shù)是變化的。例如設計一個計費函數(shù),為了計

算通話費,不同的通話類型(如市話,長途,數(shù)據(jù)與通訊,機等)有不同數(shù)

目的參數(shù)。

處理參數(shù)個數(shù)不定的情形,可有不同的途徑。例如:

(n,*a);

這個函數(shù)可對n長的浮點數(shù)組進行排序,n是變化的;由于a是數(shù)組的首

元指針,因此這個函數(shù)實際上是可以進行對任意多個浮點數(shù)排序的處理。

語言有的版本還提供一些庫函數(shù),支持處理形如:

(i,…):

的不定參數(shù)函數(shù)。

語言,允許參數(shù)表中包含無名參數(shù),主要是為了區(qū)分函數(shù),例如:

f(a,b){a+b*b;}

f(a,b,)(a*a+b;)

兩個不同的函數(shù)問名,但由于第一個函數(shù)包含一無名參數(shù),使得在調用時能夠

被區(qū)分,f(x,y)是第一個函數(shù)的調用,f(x,y,0)是第二個函數(shù)的調用。

程序還允許為函數(shù)定義可缺省參數(shù),這種函數(shù)調用時具有靈活性,

如:

(a,b,c=O){

a*a+b*b+c*c:

其中參數(shù)c為可缺省參數(shù),下面的調用方式都是合法的(x,y,z為型變量):

(x,y,z)

(x+y,x—y)

參數(shù)表中可有任意多個參數(shù)指定為可缺省參數(shù),但所有可缺省參數(shù)必須列

后。在調用該函數(shù)時,一般不允許部分缺省,即要么省去全部缺省參數(shù),要么

一個也不省。

2.函數(shù)值調用和引用調用

語言在進行函數(shù)調用時,對參數(shù)的處理有兩種方式,賦值型和引用型,

即值調用方式和引用調用方式。前者是普通的形式,在c語言中只有這種方式;

語言中增加了引用調用形式,這種形式與語言中的變量參數(shù)調用方

式相似。

1.賦值調用方式

在執(zhí)行函數(shù)調用時,在檢查函數(shù)名與參數(shù)表之后,首先為值參數(shù)分配內存,

然后計算各對應的實參表達式,并把計算的值賦給剛剛創(chuàng)建的參數(shù)變量,進而

開始函數(shù)體的運行。

賦值形參:在函數(shù)定義的參數(shù)中,除了被說明為引用(&)的參數(shù)之外,

其余所有類型的形參都屬于賦值形參。

凡是賦值形參,在函數(shù)的每次調用時,都必須為每?個賦值形參創(chuàng)建?個

新的參數(shù)變量。

實參表達式:另一方面,函數(shù)調用語句中,與賦值形參相對應的實參可以

是指定類型的常量、變量或表達式。在執(zhí)行函數(shù)調用時應把該表達式的值計算

出來,作為初值賦給剛剛為賦值形參創(chuàng)建的參數(shù)變量。這是賦值調用方式名稱

的由來。

2.引用調用方式

引用形參:函數(shù)定義的參數(shù)表中,名字前加上符號&的參數(shù)為引用形參。

例如:

(&a,&b){

=a;

a=b;

b=;

形參a,b為引用形參,這時其函數(shù)原型可寫為:

引用形參在調用過程中的參數(shù)傳遞機制不同于賦值形參。其要點是:

(1)函數(shù)的調用語句中對應于引用形參的實參必須是同一類型的變量,非

變量的表達式則不允許。

(2)參數(shù)傳遞的內容不是實參的值,而是地址,其實際的效果是令對應的

引用形參在調用過程中,作為一個變量名指向作為實參的這個變量,與賦值形

參的不同在這里體現(xiàn)出來,在引用調用過程中并不創(chuàng)建新的參數(shù)變量!

(3)在函數(shù)體程序塊的運行中,引用形參的每次出現(xiàn),由于它現(xiàn)在已經(jīng)是

指向實參變量,因此相當于全用實參變量所代替。即起到了所謂的“換名”的

作用。

(4)在函數(shù)體程序運行結束,控制轉回調用點時,該引用形參與實參變量

的對應關系也就終止了。但是在調用過程中對J?這個實參變量的所有處理和操

作的結果,卻保留下來。這一點也是區(qū)別于賦值調用的。

課題07:內聯(lián)函數(shù)與遞歸函數(shù)

一、教學目標:

1.進一步掌握函數(shù)的應用

2.了解內聯(lián)函數(shù)

3.掌握遞歸函數(shù)的使用

二、教學重點:

1.函數(shù)嵌套

2.內聯(lián)函數(shù)

三、教學難點:

1.函數(shù)的遞歸調用

四、課時安排:

2節(jié)課

五、教具準備:

多媒體教室

六、教學方法:

講授

七、教學過程:

(一)、復習導入

(二)、講授新課

1.內聯(lián)函數(shù)

內聯(lián)()函數(shù)的設置是不同于C的特征之一。

(1)在程序中符合下列條件的函數(shù):

①函數(shù)說明前冠以“"關鍵字的函數(shù);

②類內定義的函數(shù)成員,將在第七章介紹。

(2)在編譯過程中,凡內聯(lián)函數(shù),系統(tǒng)把它的執(zhí)行代碼插入到該函數(shù)的每個調用點,

從而使程序執(zhí)行過程中,每次該函數(shù)調用時不需控制轉移,但該函數(shù)代碼可能有多個

拷貝山現(xiàn)在目標程序中。也就是說,把多次調用的函數(shù)說明為內聯(lián)函數(shù),會使目標程序

占用的空間加大,而運行時間得到節(jié)省。

(3)為了優(yōu)化程序、提高程序的運行效率,一般把函數(shù)體短小而乂頻繁調用的函數(shù)說

明為內聯(lián)函數(shù)較好。

(4)利用編譯預處理的宏定義方式,也可以實現(xiàn)類似于內聯(lián)函數(shù)的功能。

不過,內聯(lián)函數(shù)的方式更為方便和可靠。例如,下面幾個內聯(lián)函數(shù)定義可以用帶參數(shù)的

宏定義方式實現(xiàn):

(a,b){(a>b)a;b;)

(a){(a>=0)a:0;}

(a,b){l(X).O*a/b;}

(a,b){t;;;;;}

(x){(x%2==1)1:0;}

對應的宏定義為:

#()((a>b)a:b)求較大者

#(a)((a>=0)a:0)求絕對值

#()(100.0*a/b)求百分比

#(t,a,b){;;;}交換的值

#(x)((x%2==1)1:0)判斷x是否為奇數(shù)

雖然這些帶參數(shù)的宏定義的功能與對應的內聯(lián)函數(shù)基本一致,但仍然是有差別

的,宏定義中的參數(shù)和計算結果沒有類型說明,編譯時不可能進行類型檢查,是

不安全的,更無法區(qū)分賦值參數(shù)和引用參數(shù),很容易出錯。因此,語言的編程中,

當某段計算短小而又經(jīng)常被重復時,建議采用內聯(lián)函數(shù),少用宏定義實現(xiàn)。

2.函數(shù)嵌套

一個函數(shù)的函數(shù)體中包含一個或多個函數(shù)調用語句,即稱為函數(shù)嵌套。嵌套

的含義是,如果函數(shù)A要調用函數(shù)B,也就是說,函數(shù)A的定義要依賴于函數(shù)B

的定義。因此函數(shù)B的定義或函數(shù)B的原型必須出現(xiàn)在函數(shù)A的定義語句之

前。

為了保證返回后繼續(xù)正常運行,函數(shù)調用過程開始時需要做更多的事

情:

1)建立被調用函數(shù)的??臻g;

2)保存調用函數(shù)的運行狀態(tài)和返回地址;

3)傳遞參數(shù);

4)把程序控制轉交給被調用函數(shù)。

3.函數(shù)的遞歸

遞歸函數(shù)的設計在程序設計中占有重要的地位。

函數(shù)A在其函數(shù)體中直接包含它自己的調用語句,這種調用稱為直接遞歸調用,

函數(shù)A稱為(直接)遞歸函數(shù)。函數(shù)A在其函數(shù)體中間接地包含對它自己的調

用,例如A調用函數(shù)B,但函數(shù)B又調用函數(shù)A,則函數(shù)A稱為(間接)遞歸函

數(shù)。下面是一個(直接)

遞歸函數(shù)的例子:

(n){

(n<2=I;

(n—1)*n;

遞歸函數(shù)的實際計算過程與遞歸次序相反,例如,設4,計算(4)的遞歸次序是:(4)一

>(3)->(2)->(1),而實際計算過程則正好相反:(1)=1,(2)(1)*2=2,⑶⑵*3=6,

(4)(3)*4=24.

在一般情況下,應注意:

(1)無論是直接遞歸還是間接遞歸都必須保證在有限次調用之后能夠結束。例如函數(shù)

中的參數(shù)n在遞歸調用中每次減1,總可達到<2的狀態(tài)而結束。

(2)函數(shù)調用時系統(tǒng)要付出時間和空間代價,在環(huán)境條件相同的情形下,總是非遞歸程

序效率較高。

課題08:函數(shù)重載

一、教學目標:

L了解函數(shù)重載的意義

2.掌握函數(shù)重載的條件

3.學會使用函數(shù)重載

二、教學重點:

I.函數(shù)重載的條件

三、教學難點:

1.函數(shù)重載的使用

四、課時安排:

2節(jié)課

五、教具準備:

多媒體教室

六、教學方法:

講授

七、教學過程:

(一)、復習導入

(二)、講授新課

函數(shù)重載實際上是函數(shù)名重載,即支持多個不同的函數(shù)采用同一名字。例如:

(n){(nVO?:n;}

(f){(f<0)f=;f;}

(d){(d<0);d;)

三個函數(shù)都是求絕對值,采用同一個函數(shù)名,更符合人們的習慣(這一點在C語

言和其它語言中是不允許的。它們規(guī)定,在同一個程序塊中一個名字只允許有一

種含義)。在程序中經(jīng)常出現(xiàn)這樣的情況:對若干種不同的數(shù)據(jù)類型求和,雖然數(shù)

據(jù)本身差別很大(例如整數(shù)求和,向量求和,矩陣求和),具體的求和操作差別

也很大,但完成不同求和操作的函數(shù)卻可以取相同的名字(例如,等)。

許多差別很大的打印函數(shù)可以都用名,顯示函數(shù)可以都用,從鍵盤或文件獲取信

息都稱作,發(fā)送稱為,接收稱為等等。函數(shù)名的重載并不是為了節(jié)省標識符(標

識符的數(shù)量是足夠的),而是為了方便程序員的使用,這一點很重要。

實現(xiàn)函數(shù)的重載必須滿足下列條件之一:

(I)參數(shù)表中對應的參數(shù)類型不同:

(2)參數(shù)表中參數(shù)個數(shù)不同;

(3)參數(shù)表中不同類型參數(shù)的次序不同。

例如:

();整型

O;類的對象

(n,a[1);

(n,a[],n);

在定義同名函數(shù)時應注意:

(1)返回類型不能區(qū)分函數(shù),例如:

();錯誤

在調用時系統(tǒng)無法區(qū)分選擇對應函數(shù)。

(2)采用引用參數(shù)不能區(qū)分函數(shù),例如:

(&);錯誤

(&);錯誤

(3)為些派生基本類型的參數(shù)雖然可以區(qū)分同名函數(shù),但在使用中必須注意,例如:

對這種函數(shù)的調用必須注意:

3,b;

5,d;

調用語句

b=(a):

d=(c);

b=(-3);

b=(3);

d=(3*a);

其中(3)因實參3既可以是型,也可以型,故這里可能出現(xiàn)二義性。

(4)包含可缺省參數(shù)時,可能造成二義性,例如:

(a,b,c=0);

(a,b);

程序設計中應避免這種情形出現(xiàn)。上面的二義性的情形是指系統(tǒng)面對某一函

數(shù)調用語句,有兩個或兩個以上同名函數(shù)與之匹配;而另一種情況下,曰于

數(shù)據(jù)類型之間的復雜轉換關系也可能造成找不到與之匹配的函數(shù)定義。遇到

無準確匹配的函數(shù)定義時,系統(tǒng)并不馬上按出錯處理,它按下面的方式處理:

(1)通過數(shù)組名與指針變量,函數(shù)名與函數(shù)指針,某類型變量與常量之間的轉換,

再查是否可實現(xiàn)匹配;

(2)把實參類型從低到高(按字長由短到長)進行基本類型與其派生類型的轉換,再

檢查是否可匹配;

(3)查有無己定義的可變個數(shù)參數(shù)的函數(shù),如有把它歸為該函數(shù)。在進行上述嘗試性

的處理之后可能出現(xiàn)仍無匹配或匹配不唯一的情況,這時可能輸出出錯信息或錯誤地

運行。

課題()9:指針

一、教學目標:

1.了解指針類型基本概念

2.掌握指針類型變量的定義

3.掌握指針類型的基本運算

二,教學重點:

1.選擇排序算法

2.指針變量的定義

三、教學難點:

I.指針變量的基本運算

四、課時安排:

2節(jié)課

五、教具準備:

多媒體教室

六、教學方法:

講授

七、教學過程:

(一)、復習導入

在前面的學習中,我們曾引入數(shù)組類型,它與本章介紹的指針和引用類型是

語言提供的三種導出類型,正確靈活地使用數(shù)組,指針和引用類型,是設計高質

量的程序所必經(jīng)掌握的技術。結構在只有數(shù)據(jù)成員時,也是一種導出數(shù)據(jù)類型,

不過,語言允許用戶為結構設計函數(shù)成員,實際上是用戶為該結構類型設計的運

算,因此,結構也是用戶定義的類或類型。程序中所處理的數(shù)據(jù)主要以變量(和

對象)的形式出現(xiàn)。每個變量有兩個最主要的屬性,那就是變量的內容和地址。

下面我們將舉例說明指針的概念與應用。

(二)、講授新課

1.選擇排序算法

首先我們來看看一個選擇排序算法。排序的任務是把已經(jīng)存在一個數(shù)組里的

n個數(shù)按從大到小的順序排列,可以采用多種不同的方法實現(xiàn),選擇排序算法

的思路簡單,容易理解,每次總是從無序的序列中選出最大者,交換到序列的

左端,于是,無序的序列越來越短,經(jīng)過1步,達到排序的目的。

演示工程。

主函數(shù)做了三件事:

1)為長度為n的數(shù)組[n]輸入n個隨機數(shù),作為排序算法處理的對象,

程序中取20,是為了顯示輸出結果方便,也可取1000或更大,實際輸入的

值是整數(shù)也是為了顯示清楚。利用庫函數(shù)()產(chǎn)生偽隨機數(shù)形成無序數(shù)組,

由用戶輸入一個隨機數(shù)(例如6523)作為可使無序數(shù)組的20個數(shù)的

隨機性較好。

2)調用函數(shù)0進行排序。

3)把經(jīng)過排序的數(shù)組[20]的值輸出。

在上面的例子中我們用到了指針,下面我們就來看看指針類型的語法規(guī)則。

2.指針類型

2.1指針變量說明

指針類型的變量說明格式為:

〈類型名〉*〈指針變量名〉二〈初值〉;

類型名:任一基本類型名,基本類型的派生類型名,用戶定義的類、枚舉類型、結構

與聯(lián)合類型名。類型名為時,稱為不確定類型的指釬類型。類型名也可以是由〈類型

名〉*表示的指針類型名這時稱為多級指針(指針類型的指針)。

符號*:表示其后說明的變量為指針變量(這里的“*”不是運算符)。

指針變量名:標識符。

初值:可缺省。它可以是該類型的某一變量的地址。

3.0,b,c[4];*;

*P12J=L);

2.2指針變量的操作

1.取地址運算&和取內容運算*

取地址運算為一單目運算,運算符為&.例如:

3,*;

其中表示變量a的地址,它可以作為指針的值。使用&時應注意:

(1)其后只可用一變量名,而不可為一字面常量或一般表達式。

(2)賦值時,與a的類型應一致。

取內容運算為一單目運算,運算符為*.例如:

3,*;

*5;

?a?*;

2.數(shù)組指針的算術運算

如果指針變量是指向數(shù)組的,例如:

a[20];

3.指針的關系運算

指針變量可以參加關系運算。這要分三種情況:

(1)一般指針可以進行相等和不等的比較,指向同一變量(地址)者為相

等,否則不等。

(2)任一指針可以和指針常量進行相等和不等的比較。如一指針p

已經(jīng)指向了某變量,則它不等于。

(3)數(shù)組指針,可以指向該數(shù)組的各個元素,且一個數(shù)組的各個元素在內

存中是順序存放的,故數(shù)組指針之間不但可以進行相等和不等比較,也可以進

行大于,小于,大于等于,小于等于等的比較。

課題10:指針與數(shù)組、字符串指針

一、教學目標:

1.進一步了解指針的用途

2.掌握指針與數(shù)組的兒種關系

3.掌握字符串指針的應用

二、教學重點:

1.指針與數(shù)組的三種不同表示

2.字符串指針的表示

三、教學難點:

1.指針與數(shù)組三種表示形式的區(qū)別

2.字符串指針相關的幾個函數(shù)

四、課時安排:

2節(jié)課

五、教具準備:

多媒體教室

六、教學方法:

講授

七、教學過程:

(一)、復習導入

前面的學習中我們學習了如何定義指針變量,以與指針的基本運算,木節(jié)我

們將繼續(xù)學習指針與數(shù)組

(二)、講授新課

1.指針與數(shù)組

1.指向數(shù)組元素的指針

前面被簡單地稱為數(shù)組指針的,實際上應更確切地稱之為指向數(shù)組元素的

指針,例如:

n[10];

則指針指向數(shù)組n的首元n[0]。在這里

101;

起相同的效果,因為數(shù)組名就是一個指向其首元的一個指針常量。

2.指向數(shù)組的指針

把數(shù)組作為整體,稱為指向數(shù)組的指針,對于這類指針,其說明語句格式

為:

〈類型名〉(*〈指針變量名〉)[〈數(shù)組元素數(shù)〉];

而指向多維數(shù)組的指針說明中,最后一項[〈數(shù)組元素數(shù)〉「可有多個。

例如:

(*)[41;

表示指針變量是一個指向一維整型數(shù)組的指針,該數(shù)組包含四個整型元素。

一般指向數(shù)組的指針由多維數(shù)組的操作中被賦值:

A[2][4]:

(*)[4];

這時指針指向一維數(shù)組A[0],(A[0]有四個元素),執(zhí)行增量運算

后,指向一維數(shù)組A[l],數(shù)組后1]的四個元素是A[l][l],A[l][2],

A[l][3]o

它們也可表示為(*)[0],(*)[1],(*)[2],(*)[3]o

從指向數(shù)組指針和指向數(shù)組元素指針的區(qū)別,可以看到:雖然指針變量的

內容都是地址,但指針變量的類型(指向的對象類型)則決定了該地址指向的

存儲區(qū)的大小,例如:

*10110];

(*)[4]:

3.指針數(shù)組

由指針組成的數(shù)組,常常在程序中出現(xiàn),其說明格式為:

(類型名〉*〈數(shù)組名〉[〈元素數(shù)〉]

n維指針數(shù)組為:

〈類型名〉*〈數(shù)組名〉[〈元素數(shù)>][〈元素數(shù)2〉上”[〈元素數(shù)n〉];

從上面格式可知:

(1)它比一般數(shù)組增加了符號。

(2)它比指向數(shù)組的指針,少了一對括號“()”。例如:

a,b,c,d,A[2][4];

*pl[4]={};

*p2[2]={A[0][l]};

其中,指針數(shù)組由四個整型指針組成,把四個整型變量a,b,c,d的地址賦給它們作

初值是合法的。

2,字符串指針

字符串是一種特殊的數(shù)據(jù)形式,在數(shù)組一節(jié),我們已經(jīng)指出字符串和字符

數(shù)組的關系。語言對于字符串的操作提供了多種手段,其中利用字符串指

針是最方便的一種。

1.說明與初始化

字符串指針沒有自己獨立的形式,其說明語句的格式與字符類型指針相同,例如:

'a1:

*1;

*2="";

[10]="”;

*3;

字符串指針有時可以按不同于一般指針變量的方式操作,即有時它可以表示字符串整

體,而不是單單表示當前指向的那個字符。

2.字符串的整體輸入輸出

把字符串作為字符數(shù)組,然后按字符依次進行輸入輸出是可行的(如上述),

但比較麻煩。因此,再提供整體輸入輸出的方法。

把字符串變量用字符數(shù)組或字符串指針的形式表示,然后直接進行操

作:

>>〈字符串);

<<〈字符串);

3.字符串指針數(shù)組

以字符串指針組成的數(shù)組使用起來比較方便,例如:

就是一個字符串指針數(shù)組,它的每個元素指向一個字符串常量。于是

[0],[1],⑵,⑶將分別表示“”,"",“”,

“Ip”。

4.利用字符串指針的標準函數(shù)

在頭文件中,C++系統(tǒng)提供若干串處理函數(shù)的說明,它們大都利

用字符串指針,下面列出幾例:

(1)求字符串長度。

返回字符串的長度(不包括串尾符)。

(2)字符串拷貝:

*(*1,*2);

把字符串2拷貝給字符?。ǜ采w原來內容),返回的地址。

(3)字符串連接:

*(*1,*2);

把字符串2連接到字符串1的后面(使1加長),返回1的地址。

(4)字符串比較:

(*1,*2);

課題11:指針與函數(shù)

一、教學目標:

1.體會指針與函數(shù)的密切關系

2.了解指針與函數(shù)的幾種應用

3.掌握幾種函數(shù)與指針應用的方法

二、教學重點:

I.指針作為函數(shù)參數(shù)

2.函數(shù)返回指針

三、教學難點:

1.指針函數(shù)

四、課時安排:

2節(jié)課

五、教具準備:

多媒體教室

六、教學方法:

講授

七、教學過程:

(一)、復習導入

指針與函數(shù)的關系密切,主要分三部分,指針作函數(shù)參數(shù),作函數(shù)返回類型

和指向函數(shù)的指針。函數(shù)指針在語言是沒有的

(二)、講授新課

I.指針作函數(shù)參數(shù)

指針是一種特殊類型的數(shù)據(jù),它的值是另外某種類型的變量的地址。因此,指針作函數(shù)

的參數(shù)可以起到其它類型參數(shù)所起不到的作用。C++語言中,函數(shù)的參數(shù)(引用型參

數(shù)除外)在調用過程中,須把實參(表達式)的值賦給僅在調用過程中有意義的形參,參

加到函數(shù)體的運算之中。這樣的機制很難實現(xiàn)對相對于函數(shù)的外部的“全局”變量作某

些處理。

利用指針可以解決兩個數(shù)交換問題,()函數(shù)可以定義為:

2.函數(shù)返回指針

返回值為指針的函數(shù)稱為指針型函數(shù),其返回類型的說明應指明指針的對

象類型后加符號。例如:

*(m){

(m<1m>4)?[0]:[m];

這個函數(shù)()返回的是字符串指針,可直接調用函數(shù)()

來進行字符串的輸入輸出。

指針型函數(shù)的設計,應注意返回的指針在該函數(shù)被調,書的域內是有確切的

對象變量的。切不可返回指向函數(shù)內說明的局部變量或參數(shù)變量的指針,或無

指向的指針。

3.函數(shù)指針

函數(shù)不是數(shù)據(jù),但它與變量還是有兩點相通之處:?個是它有類型(返回

類型),另一個是它也有地址,稱為人口地址,故在有的書中也勉強地把函數(shù)仍

歸為一種特殊的數(shù)據(jù)“類型”。

函數(shù)的地址也可作指針的值,這就是函數(shù)指針。

函數(shù)指針的說明格式與函數(shù)的原型相似,主要區(qū)別是:原來的〈函數(shù)名〉,

用*〈函數(shù)指針名〉所代替,例如:

其中是一個函數(shù)指針變量,由于對的說明中已規(guī)定了函數(shù)的返回類

型(有時還包括存儲類型)和參數(shù)表,因此,指針只能夠指向這類函數(shù)。例

如:

fl();

f2();

f3();

f4();

設fl234是4個已說明的函數(shù),這時,下面的說明和賦值,就有合法

與不合法的區(qū)別:

(*)()1;合法

(*1)()1;不合法

4;合法

2;不合法

3;合法

C++語言本身不允許把函數(shù)作為參數(shù),然而有了函數(shù)指針,就可以通過

函數(shù)指針,起到把函數(shù)作為參數(shù)的作用。例如:

用來計算函數(shù)定積分的函數(shù)(),對于不同的函數(shù)計算其定積分值,

應該有一個函數(shù)參數(shù),在C++程序中用函數(shù)指針可以方便地解決這個問題:

(a,b,(*)()):

參數(shù)給出定積分的上下限,函數(shù)指針則指向被積函數(shù)(其函數(shù)體從

略)。在使用時可以對不同的浮點函數(shù)和上下限,調用()計算其定積

分:

3.2,4.2;

fl(){...}:函數(shù)體從略

f2()1..};函數(shù)體從略

(*)()1:函數(shù)指針1指向函數(shù)門

<<(a,b,)<<;

a=4.0;10.5;

2;1指向函數(shù)f2

<<(a,b,)<<;

兩次調用分別計算兩個不同函數(shù)和f2的定積分值,這樣的功能沒有函數(shù)

指針是難以實現(xiàn)的。

課題12:指針與動態(tài)分配內存

一、教學目標:

1.了解指針動態(tài)內存分配

2.掌握動態(tài)分配內存運算符

3.學會使用指針進行內存動態(tài)分配

二、教學重點:

1.動態(tài)分配運算符

三、教學難點:

I.指針內存的動態(tài)分配使用

四、課時安排:

2節(jié)課

五、教具準備:

多媒體教室

六、教學方法:

講授

七、教學過程:

(一)、復習導入

前面的學習過程中,我們知道指針可以指向“其他”的變量,則它除了指向

其它變量之外,可不可以自己也能夠分配空間呢?下面我們就來學習指針如何

分配內存空間。

(二)、講授新課

1.動態(tài)分配運算符

在前面,我們己經(jīng)介紹了動態(tài)分配運算符和。和的使用,也是語言優(yōu)于C語言

的特征之一。

運算是程序中除了變量說明之外,又一種生成變量的方法,不過用

生成的變量為無名動態(tài)變量,它返回的是一個該類型的指針值,程序通過指針

對這個變量進行操作。例如:

*,5;

*,3.0;

;生成一動態(tài)類型變量

[4];生成動態(tài)類型數(shù)組

(4.7);生成動態(tài)類型變量且賦初值

*=a*a;動態(tài)變量*被賦值

(0:i<4;i++)動態(tài)型數(shù)組的每個分量被賦值

*(+i)='a';

*;動態(tài)變量*參加運算

運算用來撤消或釋放由生成的動態(tài)變量,例如:

;釋放指向的動態(tài)變量

;釋放指向的動態(tài)變量

[];釋放指向的動態(tài)數(shù)組

動態(tài)變量與一般變量的主要區(qū)別就是它可以在程序運行過程中任意被撤銷。而一

般變量則必須在其所說明的程序塊結束時自動撤銷。

2.用指針進行內存動態(tài)分配

C++程序中對變量、數(shù)組等的說明實際上就是為它們進行內存分配,所分配的空間與其內

容,通過變量名引用。用這種方式為變量分配空間,其占用形式比較死板。有了運算符和,就可

以實現(xiàn)一種動態(tài)分配內存的形式,即通過指針引用,而內存的分配和釋放可以在程序的任何地方

進行C語言中沒有運算符和,其動態(tài)內存分配依靠若干店函數(shù)完成,比較復雜,這也是語言優(yōu)

于C語言的特點之一。例如:

這樣就生成了三個(浮點型、字符型、整型)變量,但它們沒有名字。由于三個

變量的地址分別存在指針,和,故在程序中使用這三個變量時,全通過指針:

*='A';

*=5;

*=4.7:

當不再需要這些變量時,可在程序的任何地點釋放掉它們:

注意,這里釋放的是動態(tài)的()變量,而不是指針變量(,)。這種動態(tài)生成的

變量,在使用上方便靈活,其必要條件就是應用相應的指

針來操縱它。讀者在使用動態(tài)變量時應注意的是,要保護動態(tài)變量的地址。例如

在執(zhí)行

;之后,不要輕易地沖掉指針中的值,假如執(zhí)行了;語句之后,再釋放原來生

成的動態(tài)變量:;已經(jīng)達不到原來的目標了。

C++中運算類似于語言中過程的使用,不過它不作為相應的函數(shù)處理。C+

+還保留了從C語言中繼承下來用于動態(tài)存儲分配的(),()等標準函數(shù),它

們已經(jīng)可以為和運算所取代。

課題13:引用

一、教學目標:

I.了解引用類型的概念

2.掌握引用類型和指針的區(qū)別

3.學會使用引用類型

二、教學重點:

1.引用類型的概念

2.引用類型的定義

三、教學難點:

1.引用和指針的區(qū)別

2.引用類型的使用

四、課時安排:

2節(jié)課

五、教具準備:

多媒體教室

六、教學方法:

講授

七、教學過程:

(一)、復習導入

引用()是C++語言特有的(C和語言不具備)數(shù)據(jù)形式。它的存在不

僅像數(shù)組和指針那樣依賴于已有的類型,而且它還依賴于一個已有的變量。從直

觀上說,一個引用變量是一個已定義的變量的別名。這種引用型變量在作為函數(shù)

的參數(shù)和返回類型時,其使用方式與指針類型有相似性。

(二)、講授新課

L引用變量的說明

引用變量的說明格式與指針變量說明相似:

〈類型名〉&〈變量名〉=(對象變量名〉;

與指針說明的區(qū)別是:

(1)用符號'&'代替符號。

(2)賦初值部分不可缺省。

例如:

5,;

引用變量,相當于整型變量和1的別名,即:

=3;

其效果為變量和同時被賦值為3。

2;

其效果是變帚和同時在原火值5的恭礎上加2,即改變?yōu)?。

2.引用和指針的比較

C

溫馨提示

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

評論

0/150

提交評論