- 相關(guān)推薦
淺談C語(yǔ)言中指針的教學(xué)
C語(yǔ)言是一門(mén)通用計算機編程語(yǔ)言,應用廣泛。C語(yǔ)言的設計目標是提供一種能以簡(jiǎn)易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語(yǔ)言。
摘要:C語(yǔ)言數據類(lèi)型非常豐富,其中一個(gè)重要的數據類(lèi)型是指針,利用指針可以直接實(shí)現對內存的數據進(jìn)行快速處理、實(shí)現函數間的調用等。但是由于指針概念較為復雜,使用起來(lái)非常靈活,所以對于大一的新生初次學(xué)習程序語(yǔ)言設計,在學(xué)習到指針這一數據類(lèi)型的時(shí)候往往難以掌握。因此在教學(xué)中,教師需要根據學(xué)生的實(shí)際情況合理的安排這一知識點(diǎn)的學(xué)習,一般可以按照數據在內存中的存儲方式合理地進(jìn)行教學(xué)設計,幫助學(xué)生理解指針的概念,從而熟練掌握指針的使用。
關(guān)鍵詞:指針;內存;程序
一、指針的概念
首先要讓學(xué)生明確指針也是一種數據類(lèi)型。為了讓學(xué)生很好的理解指針到底是一種什么樣的數據類(lèi)型,就必須讓學(xué)生理解數據在內存中是如何存儲的。內存是以字節為單位的一片連續的存儲空間,每一個(gè)字節單元都對應著(zhù)一個(gè)唯一的存儲單元的編號,這個(gè)存儲單元的編號就稱(chēng)為內存單元的地址,簡(jiǎn)稱(chēng)地址?梢耘e例學(xué)生宿舍,內存單元的地址就相當于我們學(xué)生所在宿舍的房間號,在內存地址所標識的內存單元中所存放的數據,就相當于學(xué)生宿舍里入住的學(xué)生一樣,可以有單人間,雙人間,四人間等等。即根據數據類(lèi)型的不一樣,分配不同的存儲空間。如下定義:char n; float d;int m ; 變量的類(lèi)型不一樣,內存為各自分配存儲空間也不一樣。由于變量n是字符型數據,所以?xún)却娣峙淦?個(gè)字節的存儲單元;變量d是浮點(diǎn)型數據,所以?xún)却娣峙淦?個(gè)字節的存儲單元;變量m是整型數據,所以?xún)却娣峙淦?個(gè)字節的存儲單元。所謂變量的地址就是內存為各變量所分配的存儲空間的第一個(gè)字節單元的地址。即地址就是用來(lái)標識數據的存儲單元的一種數據類(lèi)型,方便用戶(hù)對存儲在各自單元中的數據進(jìn)行正確的訪(fǎng)問(wèn),在C語(yǔ)言中就將地址稱(chēng)為指針。指針可以用來(lái)指向變量、結構體\\數組及其元素以及指針等。
二、區分變量、變量名、變量的地址和變量值
為了更好的理解指針這種類(lèi)型的數據,我們先來(lái)理解一下變量、變量名、變量的地址和變量值的區別。所謂的變量即命名的內存空間。變量在內存中占有一定空間,用于存放各種相應類(lèi)型的數據;所謂的變量名即給內存空間所取的一個(gè)容易記憶的名字;所謂的變量的地址即變量所使用的內存空間的地址(內存單元的編號);所謂的變量值即所對應的內存單元中存放的數值。
三、指針變量的定義、賦值和引用
(一)指針變量的定義格式:基類(lèi)型 *變量名;
例如: int *n; /*定義一個(gè)指向整數據的指針變量n*/
char *m; /*定義一個(gè)指向字符型數據的指針變量m*/
float *p; /*定義一個(gè)指向浮點(diǎn)型數據的指針變量p*/
注意:C語(yǔ)言所有的變量必須是先定義然后再使用。指針變量也必須如此,為了表示指針變量是存放地址的一種特殊變量,所以在定義變量時(shí)會(huì )在變量名前加“*”號;指針變量的基類(lèi)型表示指針變量所指向數據的類(lèi)型,因各數據類(lèi)型占用的存儲空間不一樣,指針變量的某些操作具有特殊的含義。如指針變量加1,不是純粹的加1個(gè)字節, 而是加一個(gè)所指向變量的字節個(gè)數,例如:int *p, b=100; p=&b;其中執行p++;指的是p值加2個(gè)字節。
(二)指針變量的賦值方法
(1)變量的地址賦值給指針變量,例如:int a, *p;p=&a;
(2)相同類(lèi)型的指針變量之間賦值,例如:int a, *p1,*p2;p1=&a;p2=p1;
(3)賦空值NULL,例如:int *p1 =NULL;
(三)指針變量的具體使用
首先區分“&”運算符和“*”運算符。“&”運算符表示取變量的地址, “*”運算符表示訪(fǎng)問(wèn)指針變量所指向的變量的值。在定義指針變量時(shí)”*”是指針變量的標志,沒(méi)有特殊含義,但在具體使用中要注意,在指針變量前加了”*”, 表示取其所指向變量的值。從變量名獲得變量地址用“&”運算符,從地址獲得地址指向的數據用“*”運算符。
例如:int a=3,*p=&a;
具體訪(fǎng)問(wèn)數據時(shí),可以按變量名直接訪(fǎng)問(wèn),如:a=3;而利用指向變量的的指針去訪(fǎng)問(wèn)屬于間接訪(fǎng)問(wèn),即變量a的地址(指針)存放在指針變量p中,p=&a(p指向a),然后利用指針變量p進(jìn)行變量a的訪(fǎng)問(wèn)*p=3,這就是間接訪(fǎng)問(wèn)。
四、指針變量可以作為函數的參數
指針變量和其它數據類(lèi)型的變量一樣也作為函數參數,區別只是傳遞的內容是一個(gè)地址值。而且可以通過(guò)這個(gè)地址值間接改變實(shí)參、形參所共同指向的變量的值。
例如:輸入a,b,交換a,b數據后輸出。
void fun(int *p1, int *p2)
{int temp;
temp=*p1;
*p1=*p2 ;
*p2=temp;}
main()
{int a=3,b=5,*pa, *pb;
pa=&a;
pb=&b;
fun(pa,pb);
printf(“swaped:\n”);
printf(“a=%d,b=%d\n”,a,b);}
五、總結
本文主要介紹了指針的基本概念及其使用。由于指針這種數據類(lèi)型比較靈活,所以學(xué)生剛開(kāi)始使用時(shí)容易出錯,可以通過(guò)指導學(xué)生上機調試程序,弄清程序中的細節,區分指針與其它數據類(lèi)型的區別,累積編程得經(jīng)驗,以達到熟練的使用它。
參考文獻:
[1]董漢麗.C語(yǔ)言程序設計[M].大連:大連理工出版社,2002.
【淺談C語(yǔ)言中指針的教學(xué)】相關(guān)文章:
淺談C語(yǔ)言中循環(huán)結構的教學(xué)方法03-28
淺談在語(yǔ)言活動(dòng)中滲透環(huán)境教育03-27
語(yǔ)言理解中抑制機制的概況淺談03-18
淺談?dòng)⒄Z(yǔ)中的詞匯教學(xué)03-16
淺談漢語(yǔ)言文學(xué)中語(yǔ)言的應用與意境12-08
試析中職學(xué)校的C語(yǔ)言教學(xué)03-20