計畫章節計畫章節

2022-05-29 23:21:01 字數 3241 閱讀 3481

第九章指標

【章節計畫】

【目的要求】 1、掌握指標和指標變數的概念、定義與應用;

2、掌握指標、指標變數與陣列之間的關係;

3、了解指標、指標變數與字串之間的關係;

4、掌握指標、指標變數與函式之間的關係

【教學重點】 指標和指標變數的概念、定義與應用;

指標與陣列、字串和函式之間的關係;

【教學難點】 指標與陣列、字串和函式之間的關係

【教學內容】 §9-1 指標和指標變數的概念

§9-2 指標變數的定義與應用

§9-3 陣列的指標和指向陣列的指標變數

§9-4 字串的指標和指向字串的指標變數

§9-5 返回指標值的函式

§9-6 指標陣列與主函式main()的形參

§9-7 函式的指標和指向函式的指標變數

【學時分配】 §9-1 ~ §9-3 2學時

9-4 ~ §9-7 1學時

實驗1學時

習題2學時

共計:6學時

第9章指標(第二十六講)

【授課日期周次星期】

【課題】 指標(一)

【目的與要求】 1、掌握指標和指標變數的概念、定義與應用;

2、掌握指標、指標變數與陣列之間的關係;

【教學重點】 指標、指標變數與陣列之間的關係

【教學難點】 指標、指標變數與陣列之間的關係

【教學方法】 引導講解式,實踐演示法

【教具】 電子課件、turboc2.0

【學時】 兩學時

引入 10分鐘

講授 80分鐘

小結 10分鐘

【課型】 理論教學,實踐教學

【參考資料】 譚浩強主編《c程式設計》,清華大學出版社,1999

徐建民主編《c語言程式設計》,電子工業出版社,2002

【後記】

【審批【教學內容】

9.1 指標和指標變數的概念

一、記憶體位址──記憶體中儲存單元的編號

(1)計算機硬體系統的記憶體儲器中,擁有大量的儲存單元(容量為1位元組)。

為了方便管理,必須為每乙個儲存單元編號,這個編號就是儲存單元的「位址」。每個儲存單元都有乙個惟一的位址。

(2)在位址所標識的儲存單元中存放資料。

注意:記憶體單元的位址與記憶體單元中的資料是兩個完全不同的概念。

二、變數位址──系統分配給變數的記憶體單元的起始位址

假設有這樣乙個程式:

main()

c編譯程式編譯到該變數定義語句時,將變數num 登入到「符號表」中。符號表的關鍵屬性有兩個:一是「識別符號名(id)」 ,二是該識別符號在記憶體空間中的「位址(addr)」 。

為描述方便,假設系統分配給變數num的2位元組儲存單元為 3000 和3001,則起始位址3000就是變數num在記憶體中的位址。

三、變數值的訪問──通過變數在記憶體中的位址進行

系統執行「scanf(」%d「,&num);」和「printf(」num=%d\n「, num);」時,訪問變數num值的方式可以有兩種:

例如,假設定義了這樣乙個指標變數num_pointer,它被分配到4000、4001單元,其值可通過賦值語句「num_pointer=#」得到。此時,指標變數num_pointer的值就是變數num在記憶體中的起始位址3000,如圖9-1所示。

通過指標變數num_pointer訪問變數num值的過程如下:

首先找到指標變數num_pointer的位址(4000),取出其值3000(正好是變數num 的起始位址); 然後從3000、3001中取出變數num的值(3)。

(3)兩種訪問方式的比較

兩種訪問方式之間的關係,可用某人甲(系統)要找某人乙(變數)來模擬。

一種情況是,甲知道乙在何處,直接去找就是(即直接訪問)。

另一種情況是,甲不知道乙在哪,但丙(指標變數)知道,此時甲可以這麼做:先找丙,從丙處獲得乙的去向,然後再找乙(即間接訪問)。

四、指標與指標變數

(1)指標──即位址

乙個變數的位址稱為該變數的指標。通過變數的指標能夠找到該變數。

(2)指標變數──專門用於儲存其它變數位址的變數

指標變數num_pointer的值就是變數num的位址。指標與指標變數的區別,就是變數值與變數的區別。

(3)為表示指標變數和它指向的變數之間的關係,用指標運算子「*」表示。

例如,指標變數num_pointer與它所指向的變數num的關係,表示為:

*num_pointer,即*num_pointer等價於變數num。

因此,下面兩個語句的作用相同:

num=3將3直接賦給變數num*/

num_pointer=&num使num_pointer指向num */

*num_pointer=3將3賦給指標變數num_pointer所指向的變數*/

9.2 指標變數的定義與應用

一、指標變數的定義與相關運算

[案例9.1] 指標變數的定義與相關運算示例。

/*案例**檔名:al9_

main()

程式演示]

程式運**況:

input the first number:9←┘

input the second number:6←┘

num1=9, num2=6

min=6, max=9

程式說明:

(1)第5行的if語句

如果*num1_p>*num2_p (即num1>num2),則交換指標,使num1_p指向變數num2(較小值),num2_p指向變數num1(較大值)。

(2)printf(「min=%d, max=%d\n」, *num1_p, *num2_p); 語句:通過指標變數,間接訪問變數的值。

本案例的處理思路是:交換指標變數num1_p 和num2_p的值,而不是變數num1和num2的值(變數num1和num2並未交換,仍保持原值),最後通過指標變數輸出處理結果。

二、指標變數作函式引數

1.指標變數,既可以作為函式的形參,也可以作函式的實參。

2.指標變數作實參時,與普通變數一樣,也是「值傳遞」,即將指標變數的值(乙個位址)傳遞給被呼叫函式的形參(必須是乙個指標變數)。

注意:被呼叫函式不能改變實參指標變數的值,但可以改變實參指標變數所指向的變數的值。

[案例9.3] 使用函式呼叫方式改寫[案例9.2],要求實參為指標變數。

/*案例**檔名:al9_

集合章節小結

一 選擇題 1.已知a a b 2,則 a.a a且ba b.aa且b a c.a a且b a d.aa且ba 2.設集合u a b 則a ub 等於 a.3.已知集合s 中的三個元素是 abc的三邊長,那麼 abc一定不是 a.銳角三角形 b.直角三角形 c.鈍角三角形 d.等腰三角形 4.集合a...

壓強章節總結

1 玻璃杯裡有一定質量的酒精,如圖11所示,酒精的深度為10cm,酒精重2.4n,已知玻璃杯重0.6n,杯底面積為20cm2,則 1 杯底所受的壓力 2 玻璃杯放在水平桌面上,則桌面受到的壓強為多大?2 如圖13所示的容器內裝有水,已知h1 30cm,h2 10cm,容器內的 底面積為0.5m2,則...

小學章節測試

1 乙個圓錐的底面周長是50.24厘公尺,高是10厘公尺,體積是多少立方公尺?2 乙個圓錐的體積是188.4立方公尺,它的底面半徑是2公尺,高是多少公尺?3.乙個圓錐形砂堆,底面周長是31.4公尺,高3公尺,每方砂重1.8噸,用一輛載重4.5噸的汽車,幾次可以運完?得數保留整數 5分 4.乙個圓形水...