999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語言指針簡化教學思考

2015-12-07 19:06:43鄧麗萍
教育教學論壇 2015年45期
關鍵詞:教學

鄧麗萍

摘要:《C語言程序設計》是學生剛進入大學所接觸的第一門編程語言,加上課時有限,大多數學生都覺得很難、很抽象不好學,本文作者系統討論了如何用最短的時間使學生掌握好指針的應用問題。經驗表明,在講解輸入函數的時候便介紹計算機內部的存儲和變量地址的含義,在數組應用時重點講解數組名表示數組首地址含義,這都將為指針的講解奠下基礎,在講解指針時,運用一些簡單經典的例子來涵蓋指針的所有知識,并取得了較好的效果。

關鍵詞:C語言;數組;教學;指針

中圖分類號:G718.5 ? ? 文獻標志碼:A ? ? 文章編號:1674-9324(2015)45-0228-02

在C語言的教學中,“指針”這一部分內容一直是C語言的教學重點和難點,直接影響學生對后續課程的學習和把握[1-3]。作為軟件開發入門課程,絕大多數時間是在講條件、循環、數組、函數,而指針內容卻是省、國家計算機二級、程序員等考試的必考內容。為了在最短的時間內達到較好的教學效果。筆者從多年的教學經驗認為C語言的指針教學應該注意以下幾點:

一、輸入函數scanf()和數組中地址的應用

所有的書本上都有介紹scanf(格式控制字符串,輸入項列表),此函數的輸入項列表要用“&”加變量名,要將所輸入的內容放入變量的地址中,其中格式控制串中如果有普通字符也要輸入普通字符,且有很多輸入后不能正確讀取的情況,初學者往往感到非常困惑難以理解。其實,連續定義的多個變量在內存中也是占用連續的內存單元,只是不同的數據類型所占的字節不同,程序在運行過程中遇到第一個scanf()函數時,將要求用戶從鍵盤上按要求輸入內容,所有輸入的內容都將先放入緩沖區且你可以輸入很多內容,輸入完成后再按scanf的格式控制字符串的格式來存入到變量的地址中,一旦輸入不合法,則認為輸入結束,后面的變量將取不到值。如:scanf(“%d:%d”,&a,&b);若輸入時你輸入3,4↙其中a的值為3,輸入格式串中本來要求你輸入的是“:”而你輸入的是“,”,明顯不合法,則scanf函數輸入結束,后面的變量b將取不到值。同時這也很好解釋了若程序中有多個scanf函數時,為了保證每次輸入都有效,則應該在輸入函數前加一個清空緩存函數fflush(stdin)。

數組名代表的是數組的首地址,所以在scanf()函數中以”%s”為格式串所對應輸入項列表不需要加“&”。如:char str[20];

scanf(“%s”,str);/*將輸入的內容存儲到從數組首地址開始的地址中*/

printf(“%s”,str);/*從數組的首地址開始輸出字符數組的內容*/。

這些內容都與計算機的實際存儲有關(即和地址有關)。

二、指針

指針就是地址。其實前面我們在講解輸入輸出函數和數組時,我們就介紹了一些有關地址的應用。一聽自己已經用過且有所接觸了,學生也就不會感到太畏懼了。再加上時間有限,我們要言簡意賅地說明指針的用法。

1.指針的概念。指針就是內存地址。這里首先要區分三個比較接近的概念:名稱、地址和內容(值)。名稱是給內存空間取的一個容易記憶的名字;內存中每個字節都有一個編號,就是“地址”;在地址所對應的內存單元中存放的數值即為內容或值。

為了幫助讀者理解三者之間的聯系與區別,我們不妨打個比方,有一座教師辦公樓,各房間都有一個編號,如101,102,…,201,202,…。一旦各房間被分配給相應的職能部門后,各房間就掛起了部門名稱:如電子系、計算機系、環境工程系等,假如電子系被分配在101房間,我們要找到電子系的教師(內容),可以去找電子系(按名稱找),也可以去找101房間(按地址找)。類似地,對一個存儲空間的訪問既可以指出它的名稱,也可以指出它的地址。

在C語言中,如果變量p中的內容是另一個變量i的地址,則稱變量p指向變量i,或稱p是指向變量i的指針變量,形象地用圖1所示的箭頭表示。

由此可以得出結論:變量的指針即為變量的地址,而存放其他變量地址的變量是指針變量。

指針變量是一種變量,因而也具有變量的三個要素,但它是一種特殊的變量,其特殊性表現在它的類型取值上。具體而言:①變量名:與一般的變量命名規則相同。②變量的值:是某個變量的內存地址。③變量的類型:主要是其指向的變量的類型。

2.指針指向簡單變量。

如:int a=100,*p;/*指針變量的定義*/

p=&a;/*指針變量的賦值*/

*p=200;/*指針變量的應用*/

printf(“%d”,a);則輸出值為200。

在此我們要理解指針一旦定義且指向了一簡單變量,除定義和初始化時的*p,其他的*p等價于它所指向的簡單變量(即這里的*p<=>a),p(指針)等價于簡單變量的地址(即這里的p<=>&a)。上面的輸出語句可以變為:printf(“%d”,*p)。

3.指針指向數組。

(1)指針指向一維數組。

如:int a[5]={10,20,30,40,50},*p=a;

p++;

printf(“%d,%d,%d”,*p,*(p+2),*p++);則輸出結果為:30,50,20

以上是指針指向一維數組的基本應用,首先我們要理解有關指針的運算。

&:取地址運算符[5]。

*:指針運算符(間址訪問運算符),取指針所指向的值,若所指向二維數組則表示離取值進了一步。

++:算術運算符,表示指針往下或右移一個單位(其中這個單位和具體的數據類型有關,如果是整型數一個單位就指2個字節,實型指4個字節)。

--:算術運算符,表示指針往上或左移一個單位。

若定義了一個指針指向了一個一維數組,則p<=>a的使用(原來的a[i],也可以用p[i]表示,*p<=>*a),即*(p+i)<=>a[i] <=>p[i] <=>*(a+i)。但要注意p和a同為地址它們是有區別的,p為變量地址,而a是常量地址。有p++而不能用a++。

(2)指針指向二維數組。對于指針指向二維數組,要理解行地址和列地址的含義(*運算符能實現行地址向列地址的轉換)再加上一維數組中的等價關系,能理解下面的二維數組的指針表示形式表即可。

(3)數組指針與指針數組的含義。前者是指針,后者是數組。定義格式:僅差一對圓括號。①指向一維數組的指針。假設有定義語句:int (*p)[4];②指針數組。假設有定義語句:int *p[4];

(4)應用場合:前者是一個指針,后者是多個指針。①指向一維數組的指針。一般將一個二維數組名賦值給一個指向一維數組的指針,來訪問二維數組中的某一行。②指針數組。適合存放若干個字符串,使字符串的處理更加方便靈活。例如:

char ?*menu1[]={"Copy","Cut","Paste","Delete"};

char ?menu2[4][7]={"Copy","Cut","Paste","Delete"};

用字符指針數組處理字符串不僅可以節省內存,還可以提高運行效率。

4.指針指向函數。

(1)指針作為函數的參數。

其中左邊交換完后,能傳遞給實參,因為它是指針所指向的值發生交換,而右邊只是指針的指向發生改變原本值未發生交換。

(2)指針函數與函數指針。這是兩個完全不同的概念,前者是函數,后者是指針。

a定義格式:僅差一對圓括號。

①指針函數。假設有定義語句:

int ?*fp(int x,int y);

②指向函數的指針(函數指針)。假設有定義語句:

int ?(*fp)(int x,int y);

b應用場合:前者是一個函數,只是函數的返回值是指針;后者是一個指向函數的指針,通過這個指針可以間接地調用所指向的函數。

三、總結

本文探討了指針教學中,通過截取最基本且最重要的知識來解析其應用問題,目的在于使學生在較短的時間內掌握其基本知識,預計可作為指針教學的有效方案之一。

參考文獻:

[1]管銀枝.C語言程序設計實例教程[M].北京:人民郵電出版社,2011.

[2]譚浩強.C程序設計(第二版)[M].北京:清華大學出版社,2001.

[3]白羽.C語言實用教程[M].北京:電子工業出版社,2009.

猜你喜歡
教學
微課讓高中數學教學更高效
甘肅教育(2020年14期)2020-09-11 07:57:50
「微寫作」教學實踐的思考
“以讀促寫”在初中寫作教學中的應用
如何讓高中生物教學變得生動有趣
甘肅教育(2020年12期)2020-04-13 06:25:34
談高中音樂欣賞教學中的“聽、看、想、說、動”
“自我診斷表”在高中數學教學中的應用
東方教育(2017年19期)2017-12-05 15:14:48
對外漢語教學中“想”和“要”的比較
唐山文學(2016年2期)2017-01-15 14:03:59
對識譜教學的認識與思考
《可以預約的雪》教學探索與思考
中學語文(2015年6期)2015-03-01 03:51:42
對高等數學教學的一些思考
主站蜘蛛池模板: 中文字幕亚洲乱码熟女1区2区| 国产噜噜噜| 毛片a级毛片免费观看免下载| 亚洲水蜜桃久久综合网站 | 国产福利小视频高清在线观看| 99re免费视频| 国产成人亚洲综合a∨婷婷| 99久久精品免费看国产免费软件| 亚洲天堂伊人| 一级成人欧美一区在线观看| 国内精品小视频福利网址| 亚洲欧洲日韩综合色天使| 欧亚日韩Av| 国产成人盗摄精品| 91网站国产| 永久毛片在线播| 免费在线成人网| 91在线视频福利| 欧美成在线视频| 高潮毛片无遮挡高清视频播放| 午夜日本永久乱码免费播放片| 四虎永久在线精品国产免费| 欧美成一级| 亚洲欧洲国产成人综合不卡| 播五月综合| 天堂久久久久久中文字幕| 日韩a级片视频| 三级国产在线观看| 国产精品视频白浆免费视频| 日本91在线| 中文字幕伦视频| 97影院午夜在线观看视频| 国产麻豆91网在线看| 一本大道东京热无码av| 欧美激情,国产精品| 色婷婷天天综合在线| 免费aa毛片| 国产麻豆福利av在线播放| 色综合中文| 青青草a国产免费观看| 国产一区二区三区夜色| 欧美日韩另类国产| 亚洲精品你懂的| 白浆视频在线观看| 久久不卡国产精品无码| 国产精品无码久久久久久| 亚洲国产精品日韩欧美一区| 婷婷色中文| 国产女人在线| 精品国产自| 欧美日韩一区二区三| 中文国产成人精品久久| 丁香婷婷在线视频| 日本精品视频一区二区| 波多野结衣亚洲一区| 久久精品国产91久久综合麻豆自制| 欧美日韩成人在线观看| 国内精品久久人妻无码大片高| 欧美成人国产| 综合社区亚洲熟妇p| 日韩最新中文字幕| 福利在线不卡一区| 一本大道在线一本久道| 中文字幕1区2区| 免费av一区二区三区在线| 欧洲成人在线观看| 国产亚洲美日韩AV中文字幕无码成人 | 在线一级毛片| 午夜少妇精品视频小电影| 国产精品国产三级国产专业不| 二级特黄绝大片免费视频大片| 99视频免费观看| 欧美在线一级片| 国产日韩久久久久无码精品| 亚洲综合激情另类专区| 日韩av手机在线| 热九九精品| 色爽网免费视频| 伊人91在线| 五月婷婷欧美| 国产特一级毛片| 中文字幕天无码久久精品视频免费 |