當前位置:學問君>學習教育>畢業論文>

淺談C語言中指針的教學

學問君 人氣:1.55W

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何執行環境支援便能執行的編程語言。

淺談C語言中指針的教學

摘要:C語言數據類型非常豐富,其中一個重要的數據類型是指針,利用指針可以直接實現對內存的數據進行快速處理、實現函數間的調用等。但是由於指針概念較爲複雜,使用起來非常靈活,所以對於大一的新生初次學習程序語言設計,在學習到指針這一數據類型的時候往往難以掌握。因此在教學中,教師需要根據學生的實際情況合理的安排這一知識點的學習,一般可以按照數據在內存中的存儲方式合理地進行教學設計,幫助學生理解指針的概念,從而熟練掌握指針的使用。

關鍵詞:指針;內存;程序

一、指針的概念

首先要讓學生明確指針也是一種數據類型。爲了讓學生很好的理解指針到底是一種什麼樣的數據類型,就必須讓學生理解數據在內存中是如何存儲的。內存是以字節爲單位的一片連續的存儲空間,每一個字節單元都對應着一個唯一的存儲單元的編號,這個存儲單元的編號就稱爲內存單元的地址,簡稱地址。可以舉例學生宿舍,內存單元的地址就相當於我們學生所在宿舍的房間號,在內存地址所標識的內存單元中所存放的數據,就相當於學生宿舍裏入住的學生一樣,可以有單人間,雙人間,四人間等等。即根據數據類型的不一樣,分配不同的存儲空間。如下定義:char n; float d;int m ; 變量的類型不一樣,內存爲各自分配存儲空間也不一樣。由於變量n是字元型數據,所以內存分配其1個字節的存儲單元;變量d是浮點型數據,所以內存分配其4個字節的存儲單元;變量m是整型數據,所以內存分配其2個字節的存儲單元。所謂變量的地址就是內存爲各變量所分配的存儲空間的第一個字節單元的地址。即地址就是用來標識數據的存儲單元的一種數據類型,方便用戶對存儲在各自單元中的數據進行正確的訪問,在C語言中就將地址稱爲指針。指針可以用來指向變量、結構體數組及其元素以及指針等。

二、區分變量、變量名、變量的地址和變量值

爲了更好的理解指針這種類型的數據,我們先來理解一下變量、變量名、變量的地址和變量值的區別。所謂的變量即命名的內存空間。變量在內存中佔有一定空間,用於存放各種相應類型的數據;所謂的變量名即給內存空間所取的一個容易記憶的名字;所謂的變量的地址即變量所使用的內存空間的地址(內存單元的.編號);所謂的變量值即所對應的內存單元中存放的數值。

三、指針變量的定義、賦值和引用

(一)指針變量的定義格式:基類型 *變量名;

例如: int *n; /*定義一個指向整數據的指針變量n*/

char *m; /*定義一個指向字元型數據的指針變量m*/

float *p; /*定義一個指向浮點型數據的指針變量p*/

注意:C語言所有的變量必須是先定義然後再使用。指針變量也必須如此,爲了表示指針變量是存放地址的一種特殊變量,所以在定義變量時會在變量名前加“*”號;指針變量的基類型表示指針變量所指向數據的類型,因各數據類型佔用的存儲空間不一樣,指針變量的某些操作具有特殊的含義。如指針變量加1,不是純粹的加1個字節, 而是加一個所指向變量的字節個數,例如:int *p, b=100; p=&b;其中執行p++;指的是p值加2個字節。

(二)指針變量的賦值方法

(1)變量的地址賦值給指針變量,例如:int a, *p;p=&a;

(2)相同類型的指針變量之間賦值,例如:int a, *p1,*p2;p1=&a;p2=p1;

(3)賦空值NULL,例如:int *p1 =NULL;

(三)指針變量的具體使用

首先區分“&”運算符和“*”運算符。“&”運算符表示取變量的地址, “*”運算符表示訪問指針變量所指向的變量的值。在定義指針變量時”*”是指針變量的標誌,沒有特殊含義,但在具體使用中要注意,在指針變量前加了”*”, 表示取其所指向變量的值。從變量名獲得變量地址用“&”運算符,從地址獲得地址指向的數據用“*”運算符。

例如:int a=3,*p=&a;

具體訪問數據時,可以按變量名直接訪問,如:a=3;而利用指向變量的的指針去訪問屬於間接訪問,即變量a的地址(指針)存放在指針變量p中,p=&a(p指向a),然後利用指針變量p進行變量a的訪問*p=3,這就是間接訪問。

四、指針變量可以作爲函數的參數

指針變量和其它數據類型的變量一樣也作爲函數參數,區別只是傳遞的內容是一個地址值。而且可以透過這個地址值間接改變實參、形參所共同指向的變量的值。

例如:輸入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=%dn”,a,b);}

五、總結

本文主要介紹了指針的基本概念及其使用。由於指針這種數據類型比較靈活,所以學生剛開始使用時容易出錯,可以透過指導學生上機調試程序,弄清程序中的細節,區分指針與其它數據類型的區別,累積編程得經驗,以達到熟練的使用它。

參考文獻:

[1]董漢麗.C語言程序設計[M].大連:大連理工出版社,2002.