国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺談C語(yǔ)言中指針的教學(xué)

2016-02-02 08:39徐云娟
關(guān)鍵詞:指針內(nèi)存程序

徐云娟

摘 要:C語(yǔ)言數(shù)據(jù)類型非常豐富,其中一個(gè)重要的數(shù)據(jù)類型是指針,利用指針可以直接實(shí)現(xiàn)對(duì)內(nèi)存的數(shù)據(jù)進(jìn)行快速處理、實(shí)現(xiàn)函數(shù)間的調(diào)用等。但是由于指針概念較為復(fù)雜,使用起來非常靈活,所以對(duì)于大一的新生初次學(xué)習(xí)程序語(yǔ)言設(shè)計(jì),在學(xué)習(xí)到指針這一數(shù)據(jù)類型的時(shí)候往往難以掌握。因此在教學(xué)中,教師需要根據(jù)學(xué)生的實(shí)際情況合理的安排這一知識(shí)點(diǎn)的學(xué)習(xí),一般可以按照數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式合理地進(jìn)行教學(xué)設(shè)計(jì),幫助學(xué)生理解指針的概念,從而熟練掌握指針的使用。

關(guān)鍵詞:指針;程序;內(nèi)存

1 指針的概念

首先要讓學(xué)生明確指針也是一種數(shù)據(jù)類型。為了讓學(xué)生很好的理解指針到底是一種什么樣的數(shù)據(jù)類型,就必須讓學(xué)生理解數(shù)據(jù)在內(nèi)存中是如何存儲(chǔ)的。內(nèi)存是以字節(jié)為單位的一片連續(xù)的存儲(chǔ)空間,每一個(gè)字節(jié)單元都對(duì)應(yīng)著一個(gè)唯一的存儲(chǔ)單元的編號(hào),這個(gè)存儲(chǔ)單元的編號(hào)就稱為內(nèi)存單元的地址,簡(jiǎn)稱地址??梢耘e例學(xué)生宿舍,內(nèi)存單元的地址就相當(dāng)于我們學(xué)生所在宿舍的房間號(hào),在內(nèi)存地址所標(biāo)識(shí)的內(nèi)存單元中所存放的數(shù)據(jù),就相當(dāng)于學(xué)生宿舍里入住的學(xué)生一樣,可以有單人間,雙人間,四人間等等。即根據(jù)數(shù)據(jù)類型的不一樣,分配不同的存儲(chǔ)空間。如下定義:char n; float d;int m ; 變量的類型不一樣,內(nèi)存為各自分配存儲(chǔ)空間也不一樣。由于變量n是字符型數(shù)據(jù),所以內(nèi)存分配其1個(gè)字節(jié)的存儲(chǔ)單元;變量d是浮點(diǎn)型數(shù)據(jù),所以內(nèi)存分配其4個(gè)字節(jié)的存儲(chǔ)單元;變量m是整型數(shù)據(jù),所以內(nèi)存分配其2個(gè)字節(jié)的存儲(chǔ)單元。所謂變量的地址就是內(nèi)存為各變量所分配的存儲(chǔ)空間的第一個(gè)字節(jié)單元的地址。即地址就是用來標(biāo)識(shí)數(shù)據(jù)的存儲(chǔ)單元的一種數(shù)據(jù)類型,方便用戶對(duì)存儲(chǔ)在各自單元中的數(shù)據(jù)進(jìn)行正確的訪問,在C語(yǔ)言中就將地址稱為指針。指針可以用來指向變量、結(jié)構(gòu)體\\數(shù)組及其元素以及指針等。

2 區(qū)分變量、變量名、變量的地址和變量值

為了更好的理解指針這種類型的數(shù)據(jù),我們先來理解一下變量、變量名、變量的地址和變量值的區(qū)別。所謂的變量即命名的內(nèi)存空間。變量在內(nèi)存中占有一定空間,用于存放各種相應(yīng)類型的數(shù)據(jù);所謂的變量名即給內(nèi)存空間所取的一個(gè)容易記憶的名字;所謂的變量的地址即變量所使用的內(nèi)存空間的地址(內(nèi)存單元的編號(hào));所謂的變量值即所對(duì)應(yīng)的內(nèi)存單元中存放的數(shù)值。

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

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

例如: int *n; /*定義一個(gè)指向整數(shù)據(jù)的指針變量n*/

char *m; /*定義一個(gè)指向字符型數(shù)據(jù)的指針變量m*/

float *p; /*定義一個(gè)指向浮點(diǎn)型數(shù)據(jù)的指針變量p*/

注意:C語(yǔ)言所有的變量必須是先定義然后再使用。指針變量也必須如此,為了表示指針變量是存放地址的一種特殊變量,所以在定義變量時(shí)會(huì)在變量名前加“*”號(hào);指針變量的基類型表示指針變量所指向數(shù)據(jù)的類型,因各數(shù)據(jù)類型占用的存儲(chǔ)空間不一樣,指針變量的某些操作具有特殊的含義。如指針變量加1,不是純粹的加1個(gè)字節(jié), 而是加一個(gè)所指向變量的字節(jié)個(gè)數(shù),例如:int *p, b=100; p=&b;其中執(zhí)行p++;指的是p值加2個(gè)字節(jié)。

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

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

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

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

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

首先區(qū)分“&”運(yùn)算符和“*”運(yùn)算符?!?amp;”運(yùn)算符表示取變量的地址, “*”運(yùn)算符表示訪問指針變量所指向的變量的值。在定義指針變量時(shí)”*”是指針變量的標(biāo)志,沒有特殊含義,但在具體使用中要注意,在指針變量前加了”*”, 表示取其所指向變量的值。從變量名獲得變量地址用“&”運(yùn)算符,從地址獲得地址指向的數(shù)據(jù)用“*”運(yùn)算符。

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

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

4 指針變量可以作為函數(shù)的參數(shù)

指針變量和其它數(shù)據(jù)類型的變量一樣也作為函數(shù)參數(shù),區(qū)別只是傳遞的內(nèi)容是一個(gè)地址值。而且可以通過這個(gè)地址值間接改變實(shí)參、形參所共同指向的變量的值。

例如:輸入a,b,交換a,b數(shù)據(jù)后輸出。

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);}

5 總結(jié)

本文主要介紹了指針的基本概念及其使用。由于指針這種數(shù)據(jù)類型比較靈活,所以學(xué)生剛開始使用時(shí)容易出錯(cuò),可以通過指導(dǎo)學(xué)生上機(jī)調(diào)試程序,弄清程序中的細(xì)節(jié),區(qū)分指針與其它數(shù)據(jù)類型的區(qū)別,累積編程得經(jīng)驗(yàn),以達(dá)到熟練的使用它。

參考文獻(xiàn):

[1]董漢麗.C語(yǔ)言程序設(shè)計(jì)[M].大連:大連理工出版社,2002.

猜你喜歡
指針內(nèi)存程序
外部高速緩存與非易失內(nèi)存結(jié)合的混合內(nèi)存體系結(jié)構(gòu)特性評(píng)測(cè)
“春夏秋冬”的內(nèi)存
試論我國(guó)未決羈押程序的立法完善
“程序猿”的生活什么樣
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
基于內(nèi)存的地理信息訪問技術(shù)