當前位置:文思屋>學習教育>畢業論文>

淺談C語言中指標的教學

文思屋 人氣:1.56W

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.