




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上C語言指針教學(xué)設(shè)計(jì)1.關(guān)于C語言程序設(shè)計(jì)中的指針C語言程序設(shè)計(jì)是高校理工科專業(yè)的一門重要專業(yè)或公共基礎(chǔ)課,不僅是計(jì)算機(jī)相關(guān)專業(yè)學(xué)生進(jìn)一步學(xué)習(xí)匯編語言程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)計(jì)算機(jī)操作系統(tǒng)、硬件編程等課程的入門級(jí)課程,同時(shí)也是非計(jì)算機(jī)專業(yè)學(xué)生了解計(jì)算機(jī)軟硬件基礎(chǔ)知識(shí)和計(jì)算機(jī)底層原理的重要手段之一.在教學(xué)內(nèi)容的組織上,強(qiáng)調(diào)和分析指針與基本數(shù)據(jù)類型、函數(shù)、數(shù)組的內(nèi)在聯(lián)系,靈活設(shè)計(jì)教學(xué)程序?qū)嵗瑸閷W(xué)習(xí)者掌握指針及c語言程序設(shè)計(jì)創(chuàng)造良好條件。指針是C語言的教學(xué)重點(diǎn),程序使用指針可以帶來很多方便,如:1) 靈活操作數(shù)組(含字符串);2) 動(dòng)態(tài)分配內(nèi)存;3) 表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu);是讓程序
2、更加簡潔高效的重要手段。然而指針也是C語言學(xué)習(xí)的最大難點(diǎn),學(xué)習(xí)者普遍感覺指針概念抽象,致使無法正確理解并使用指針,而指針的使用稍有不慎,往往會(huì)給c語言程序帶來致命的錯(cuò)誤。2.學(xué)生分析在講指針內(nèi)容之前,學(xué)習(xí)者經(jīng)歷了基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式、輸入輸出函數(shù)、選擇制語句、循環(huán)控制語句、函數(shù)、數(shù)組等內(nèi)容的學(xué)習(xí)。而指針內(nèi)容之后,一般還要講授指針與字符串、指針與數(shù)組、結(jié)構(gòu)體與共用體、文件操作等內(nèi)容。其中指針起到了承前啟后的作用,學(xué)習(xí)并掌握指針,對(duì)學(xué)習(xí)者獲得程序設(shè)計(jì)技巧和能力、繼續(xù)學(xué)習(xí)其它計(jì)算機(jī)專業(yè)課程至關(guān)重要。3.教師自我思考在課堂教學(xué)中起主導(dǎo)作用的教師,應(yīng)根據(jù)指針教學(xué)所必需的基礎(chǔ)知識(shí),在授課過程中不斷
3、調(diào)各關(guān)鍵知識(shí)點(diǎn)的重要性,盡可能在指針內(nèi)容的學(xué)習(xí)之前,使學(xué)習(xí)者具備理解指針概念的基礎(chǔ)知識(shí)和基本能力。在教學(xué)內(nèi)容的組織上,強(qiáng)調(diào)和分析指針與基本數(shù)據(jù)類型、函數(shù)、數(shù)組的內(nèi)在聯(lián)系,靈活設(shè)計(jì)教學(xué)程序?qū)嵗?,為學(xué)習(xí)者掌握指針及c語言程序設(shè)計(jì)創(chuàng)造良好條件。4.學(xué)生學(xué)習(xí)方法建議學(xué)習(xí)本章內(nèi)容時(shí),應(yīng)重點(diǎn)掌握指針與指針的區(qū)別、指針的引用方法和運(yùn)算,并在此基礎(chǔ)上進(jìn)一步理解指針作為函數(shù)參數(shù)和在數(shù)組當(dāng)中的的應(yīng)用,要求多讀程序,理解編程的算法、編程的思路,并仿照例題多編程序、上機(jī)練習(xí),真正掌握指針的靈活應(yīng)用。5.教學(xué)目標(biāo)(1)知識(shí)層面:a) 使學(xué)生掌握指針和指針變量的概念、表達(dá)方式和區(qū)別;b) 使學(xué)生掌握指針作為函數(shù)參數(shù)的使用
4、;c) 使學(xué)生初步了解指針在數(shù)組中的應(yīng)用;(2)能力層面:在編程語言環(huán)境熟練應(yīng)用指針編寫一些簡單程序、并且經(jīng)過不斷的鍛煉深化能力、最終掌握指針的應(yīng)用(3)認(rèn)知層面:深刻理解指針的相關(guān)概念和指針做函數(shù)參數(shù)和在數(shù)組當(dāng)中的應(yīng)用6.教學(xué)重點(diǎn)與難點(diǎn)(1)教學(xué)重點(diǎn):指針做函數(shù)參數(shù)和在數(shù)組當(dāng)中的應(yīng)用(2)教學(xué)難點(diǎn):如何讓學(xué)生更好地明白指針的概念處理方法: 用圖示和結(jié)合實(shí)列并盡力用通俗易懂的語言幫助學(xué)生理解指針和指針的應(yīng)用7.教學(xué)內(nèi)容設(shè)計(jì)教學(xué)內(nèi)容標(biāo)題教學(xué)過程設(shè)計(jì)意圖和目的指針的導(dǎo)入如果在 C 程序中定義了一個(gè)變量, 計(jì)算機(jī)會(huì)自動(dòng)分配一個(gè)存儲(chǔ)單元給它, 這對(duì)用戶是完全透明的, 那么我們對(duì)變量的操作實(shí)際上就是對(duì)存
5、儲(chǔ)單元里的內(nèi)容進(jìn)行操作, 這種存取變量值的方式稱為"直接存取"。另外一種存取方式是"間接存取", 這種存取方式大體思想是如果想操作存儲(chǔ)單元 a 里的內(nèi)容可以間接地通過存儲(chǔ)單元 b 來完成。打個(gè)比方, 打開一個(gè)房間有兩種可能性: 有 A 房間的鑰匙, 直接打開 A 房間; A 間的鑰匙放到了 B房間, 有 B 房間的鑰匙, 現(xiàn)在可先打開 B 房間, 找到 A 房間鑰匙后, 再將其打開, 這屬于間接打開,訪問A也叫間接訪問。指針就相當(dāng)于 B 房間里的這把鑰匙, 在計(jì)算機(jī)中的表示就是地址, 就是指針。在 C 語言中, 允許用一個(gè)變量來存放指針, 這種變量為指針
6、變量, 而剛才的 B 房間就相當(dāng)于指針變量。舉出實(shí)例讓初次了解指針變量的學(xué)生更容易了解指針和指針變量的含義間接訪問和間接訪問1.直接訪問:直接按變量名進(jìn)行的訪問就是直接訪問,如: #include<stadio> void main() int i=3; Printf(“i=%d”,i): ) 2.間接訪問:如果有一個(gè)房間的鑰匙在一個(gè)盒子里鎖著,我們現(xiàn)在要進(jìn)入這個(gè)房間,首先要用盒子的鑰匙開了盒子,取出房子的鑰匙才能打開房門,進(jìn)入到房間里面。像這樣的訪問就是間接訪問,而指針就是這樣的間接訪問,如: #include<stadio> void main() int i=3;
7、 Int *p; P=&i; Printf(“i=%d”,*p): ) 使學(xué)生明白直接訪問和間接訪問的區(qū)別指針變量的定義(1)指針變量的定義: 類型名 * 指針變量名 int * p1; /p1是指向整型變量的指針變量,簡稱int型指針 float * p2; /p2是指向整型變量的指針變量,簡稱float型指針 double *p3; /p3是指向整型變量的指針變量,簡稱double型指針 char * p4; /p4是指向整型變量的指針變量,簡稱char型指針 解釋說明:類型標(biāo)識(shí)符 * 變量名; 其中, * 表示這是一個(gè)指針變量, 變量名即為定義的指針變量名, 類型標(biāo)識(shí)符表示本指針
8、變量所指向的變量的數(shù)據(jù)類型。例如: int *p; 此條語句表示 p 是一個(gè)指針變量, 它值是某個(gè)整型變量的地址。 也可以說 p 指向一個(gè)整型變量。至于 p究竟指向哪一個(gè)整型變量, 應(yīng)由向 p 賦予的地址來決定。char*q; q 是指向字符變量的指針變量?;蛘哒f q 指向一個(gè)字符變量。 在教學(xué)中應(yīng)該著重向?qū)W生強(qiáng)調(diào), 一個(gè)指針變量只能指向同類型的變量。如 p 只能指向整型變量, 不能把 q 指向的變量, 再讓 p 指向。讓學(xué)生明白指針的定義和符號(hào)表達(dá)方式應(yīng)用舉例:通過指針變量訪問整型變量。#include<stdio.h> int main()int a=100,b=10;int
9、*p_1,*p_2;p_1=&a;p_2=&b; printf("a=%d,b=%dn",a,b);printf("p_1=%d,p_2=%dn",*p_1,*p_2);return 0;說明:p_1=&a表示P_1指向a,而p_2=&b;表示P_2指向b;p_1的值為&a(a的地址),p_2的值為&b(b的地址)讓學(xué)生了解如何通過指針變量訪問整型變量和以及如何給指針變量賦值問題設(shè)計(jì)舉例:按輸入a和b兩個(gè)整數(shù),按從大到小的順序排列輸出a和b#include<stdio.h>int main()+
10、int a,b;int *p1,*p2,*p;printf("Please enter two integer numbers:");scanf("%d %d",&a,&b);p1=&a;p2=&b;if(a<b) printf("a=%d,b=%dn",a,b);printf("max=%d,min=%dn",*p1,*p2);return 0;問題:請問橫線處應(yīng)該如何填寫?才能從大到小輸出a,b兩個(gè)數(shù)的值讓學(xué)生了解如何通過指針實(shí)現(xiàn)兩個(gè)整型數(shù)值的交換指針變量作為函數(shù)參數(shù)的例子
11、輸入84 63結(jié)果如圖例子:按輸入a和b兩個(gè)整數(shù),按從大到小的順序排列輸出a和b程序編程: #include<stdio.h>int main()void swap(int *p_1,int *p_2);/對(duì)swap函數(shù)的聲明int a,b; /定義兩個(gè)整型變量a和bint *p1,*p2; /定義兩個(gè)int *型的指針變量printf("Please enter a and b:");scanf("%d %d",&a,&b); /輸入兩個(gè)整數(shù)p1=&a; /使p1指向ap2=&b; /使p2指向bif(a&l
12、t;b) swap(p1,p2); /如果a<b,調(diào)用swap函數(shù)printf("max=%d,min=%dn",a,b);/輸出結(jié)果return 0;void swap(int *p_1,int *p_2) /定義swap函數(shù)int temp; /定義一個(gè)整型的中間變量temp temp=*p_1; /使*p_1和*p_2進(jìn)行交換*p_1=*p_2;*p_2=temp;兩個(gè)數(shù)的交換,就如同有三個(gè)盒子temp,*p_1,*p_2,現(xiàn)在*p_1和*p_2兩個(gè)盒子都裝滿了東西,并且要把兩個(gè)盒子的進(jìn)行交換,此時(shí),必須借助三個(gè)盒子temp,才能使他們進(jìn)行交換。讓學(xué)生了解指針變
13、量形參和實(shí)參的值得傳遞將輸出結(jié)果展示出來更易于分析程序通過指針應(yīng)用數(shù)組指針表示數(shù)組的示意圖(1)數(shù)組元素的指針 既然指針變量可以指向變量,同樣地也可以指向數(shù)組元素。所謂數(shù)組元素的指針就是數(shù)組元素的地址,如:int a10a10=1,2,3,5,4,6,7,9,8,10;int *p;p=&a0; (2)在引用數(shù)組元素時(shí)指針的運(yùn)算 1. 指針指向數(shù)組元素時(shí),可以對(duì)指針進(jìn)行如下運(yùn)算: 2. 加一個(gè)整數(shù)(用+或+=),如p+1;3. 減一個(gè)整數(shù)(用-或-= ),如p-1;4. 自加運(yùn)算,如p+,+p;5. 自減運(yùn)算,如p-,-p;(3)指針表示數(shù)組: 6.p+i和a+i表示:ai的地址; 7
14、.*(p+i)和*(a+i)表示:數(shù)組元素ai讓學(xué)生明白數(shù)組指針的概念和了解指針的一些運(yùn)算示意圖展示更加直觀形象容易了解、模擬數(shù)組在內(nèi)存的排列指針數(shù)組的應(yīng)用舉例(4)引用一個(gè)數(shù)組元素有兩種方法: 下標(biāo)法:如ai指針法:如*(a+i)或*(p+i)應(yīng)用舉例:有一個(gè)整型數(shù)組a,有10個(gè)元素,要求輸出全部數(shù)組元素。 程序代碼: #include<stdio.h>void main()int i,a10;printf("please enter 10 integer numbers:");for(i=0;i<10;i+)scanf("%d",&
15、amp;ai);for(i=0;i<10;i+)printf("%d ",*(a+i);printf("n");用例子的方法說明指針形式和數(shù)組等價(jià)幾個(gè)重要的指針表示形式:*p+;先實(shí)現(xiàn)*p運(yùn)算,然后使p自增1 *(p+);先實(shí)現(xiàn)*p運(yùn)算,然后使p自增1 *(p - -);先實(shí)現(xiàn)*p運(yùn)算,然后使p自減1 *(+p);先實(shí)現(xiàn)p自增1 ,然后使進(jìn)行*運(yùn)算 *(- - p);先使p自減1 ,然后進(jìn)行*運(yùn)算 +(*p);表示P所指向的值加1 說明幾個(gè)重要的指針形式含義的說明圖示說明程序代碼例如:將數(shù)組a中n個(gè)整數(shù)按相反的順序存放算法實(shí)現(xiàn):用形參和實(shí)參都為數(shù)組
16、名來實(shí)現(xiàn) #include<stdio.h>int main() 利用程序代碼實(shí)例與解題思路相結(jié)合,使學(xué)生更理解程序代碼說代表的意思void inv(int x,int n);/inv函數(shù)聲明int i;int a10=3,7,9,11,0,6,7,5,4,2;printf("The original array:n");for(i=0;i<10;i+)printf("%d ",ai);/輸出為交換時(shí)數(shù)組各元素的值printf("n");inv(a,10);/調(diào)用inv函數(shù),進(jìn)行交換printf("The
17、array has been inverted:n");for(i=0;i<10;i+)printf("%d ",ai);/輸出交換后數(shù)組各元素的值printf("n");return ;void inv(int x,int n)/形參x是數(shù)組名 int temp, i ,j,m=(n-1)/2;for(i=0;i<=m;i+)j=n-1-i;temp=xi;xi=xj;xj=temp;/把xi和xj進(jìn)行交換return ; 解題思路:將a0與an-1進(jìn)行交換,再將a1與an-2交換直到將aint(n-1)/2與aint(n-1)/
18、2)-1交換。今天用循環(huán)處理此問題,設(shè)用兩個(gè)“位置指示變量”i和j,i的初值為0,j的初值為n-1.將ai和aj交換,然后使i的值加1,j的值減1,再.將ai和aj交換,直到i=(n-1)/2為止用圖示的方法展示直觀形象。易于理解用指針做函數(shù)參數(shù)如果有一個(gè)實(shí)參數(shù)組,要想在函數(shù)中改變此數(shù)組中的元素的值,實(shí)參和形參的對(duì)應(yīng)關(guān)系有四種情況。 說明四種形參和實(shí)參的表達(dá)方式教學(xué)總結(jié)通過本次課呢,我們了解到指針與指針變量的一些基本概念,表達(dá)形式及其的一些簡單的應(yīng)用。重點(diǎn)了解指針的一些運(yùn)算,如*p+等;還有指針做函數(shù)參數(shù)的應(yīng)用,尤其是在數(shù)組中做函數(shù)參數(shù)的應(yīng)用。指針是C語言程序設(shè)計(jì)課程的重點(diǎn),凝結(jié)了C語言的精髓,但同時(shí)也是教學(xué)難點(diǎn),掌握起來有一定的難度。學(xué)習(xí)者只有在基礎(chǔ)內(nèi)容的學(xué)習(xí)過程中,不斷地積累相關(guān)知識(shí)、鍛煉自身的綜合能力,才能為指針內(nèi)容的學(xué)習(xí)奠定良好的基礎(chǔ)。而作為教學(xué)主導(dǎo)者的教師,也要不斷理解課程各個(gè)知識(shí)點(diǎn)的內(nèi)在聯(lián)系,精心設(shè)計(jì)簡單明了的教學(xué)實(shí)例,逐步降低學(xué)習(xí)的難度,兩者缺一不可。在以后的教學(xué)工作中,筆者將繼續(xù)關(guān)注C語言程序設(shè)計(jì)課程各知識(shí)點(diǎn)的內(nèi)在聯(lián)系,總結(jié)影響教學(xué)效果的各種外在因素,不斷探索課程教學(xué)改革的內(nèi)容、
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度倉儲(chǔ)物流勞務(wù)派遣安全責(zé)任書
- 2025年度在線貸款中介居間合作協(xié)議
- 二零二五年度企業(yè)內(nèi)部員工外出安全免責(zé)合同
- 2025年度個(gè)人租房合同協(xié)議書模板(含租賃房屋維修費(fèi)用承擔(dān))
- 2025年度應(yīng)屆大學(xué)生實(shí)習(xí)合同
- 國際發(fā)展合作的中國實(shí)踐 第六期綠色發(fā)展援助篇
- 2025年度抖音網(wǎng)紅達(dá)人合作推廣合同模板
- 2025年度合作社土地入股與農(nóng)業(yè)資源環(huán)境監(jiān)測合作協(xié)議
- 2025年度房屋租賃合同租賃雙方租賃期間租賃物租賃權(quán)轉(zhuǎn)讓協(xié)議
- 沙石運(yùn)輸行業(yè)自律公約
- 中國糖尿病防治指南(2024版)解讀-1
- 2024年計(jì)算機(jī)二級(jí)WPS考試題庫(共380題含答案)
- 2024年德州職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫
- 跨學(xué)科實(shí)踐活動(dòng)10調(diào)查我國航天科技領(lǐng)域中新型材料新型能源的應(yīng)用課件九年級(jí)化學(xué)人教版(2024)下冊
- 大學(xué)生勞動(dòng)實(shí)踐活動(dòng)總結(jié)
- 代理分銷銷售協(xié)議書
- 2024年江蘇農(nóng)牧科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫參考答案
- 2024綜合基礎(chǔ)知識(shí)考試題庫及解析(146題)
- 中國類風(fēng)濕關(guān)節(jié)炎診療指南(2024版)解讀
- 《社會(huì)治理概論》課程教學(xué)大綱
- 讀書分享《非暴力溝通》課件(圖文)
評(píng)論
0/150
提交評(píng)論