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

C語言中指針的應(yīng)用分析

2013-01-11 09:11:30
關(guān)鍵詞:定義

楊 杰

(山西職業(yè)技術(shù)學(xué)院,山西 太原 030006)

C語言是一種基本的程序設(shè)計(jì)語言,它包含了很多數(shù)據(jù)類型,其中指針是它的精髓,可以表示并實(shí)現(xiàn)非常復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。在應(yīng)用C語言編程時(shí),指針的使用頻率較高,有時(shí)甚至是解決問題的唯一途徑,而且可以通過應(yīng)用指針來提高程序的運(yùn)行速度。因此,是否能夠準(zhǔn)確靈活地應(yīng)用指針,是應(yīng)用C語言編程的一個(gè)關(guān)鍵。

一、指針概念

在計(jì)算機(jī)中,所有的數(shù)據(jù)都是存放在存儲器中的,一般把存儲器中的一個(gè)字節(jié)稱為一個(gè)內(nèi)存單元,不同的數(shù)據(jù)類型所占用的內(nèi)存單元數(shù)不等。如整型量占兩個(gè)單元,字符量占一個(gè)單元等。為了正確地訪問這些內(nèi)存單元,必須為每個(gè)內(nèi)存單元編上號。根據(jù)一個(gè)內(nèi)存單元的編號,即可以準(zhǔn)確地找到該內(nèi)存單元。內(nèi)存單元的編號也叫地址。根據(jù)內(nèi)存單元的地址,就可以找到所需的內(nèi)存單元,所以通常也把這個(gè)地址稱為指針。

二、常用的指針類型

1.基本類型指針

基本類型指針?biāo)傅臄?shù)據(jù)類型是簡單的數(shù)據(jù)類型,可以是整型、實(shí)型、字符型。

上例中,定義了一個(gè)整型變量p1以及一個(gè)整型數(shù)據(jù)的指針p,并把整型變量p1的內(nèi)存單元的地址(&p1)賦值給了整型數(shù)據(jù)指針p。

2.指向數(shù)組的指針

該指針?biāo)傅臄?shù)據(jù)類型是一個(gè)數(shù)組,該數(shù)組可以是一維數(shù)組、二維數(shù)組或多維數(shù)組。

上例中,定義了一個(gè)整型的一維數(shù)組str,還定義了一個(gè)整型數(shù)據(jù)的指針p1,最后又把數(shù)組名str賦值給了指針p1,對于一個(gè)一維數(shù)組來說,數(shù)組名str表示該數(shù)組中第一個(gè)元素str[0]的地址,即該數(shù)組的首地址。也就是說相當(dāng)于把數(shù)組str的首地址&str[0]賦值給了整型指針p1。

3.二級指針

二級指針也就是指指針變量所指向的是某一個(gè)指針的地址。

上例中,定義了一個(gè)整型變量score,一個(gè)整型指針p1,又定義了一個(gè)二級指針pp。之后把整型變量score的地址賦值給了一級指針p1,即p1中存放的是整型變量score的首地址。最后又將一級指針p1的地址賦值給了二級指針pp,即二級指針pp中存放的是一級指針p1的地址。如果將二級指針pp的地址賦值給某一個(gè)指針的話,該指針就為三級指針。同理,可以派生出多級指針。

4.指向函數(shù)的指針

指向函數(shù)的指針就是指指針變量所指向的是函數(shù)的首地址,因此可以通過引用該指針變量來調(diào)用該函數(shù)。

上例中定義了一個(gè)整型指針f,該指針變量指向一個(gè)函數(shù),也就是存放了該函數(shù)在內(nèi)存中的存儲地址。定義了一個(gè)函數(shù)p,p中定義了兩個(gè)整型變量作為參數(shù),并且返回值也為整型。最后將函數(shù)p賦值給了指針f,f指向函數(shù)p,也就是將函數(shù)p的首地址賦值給了指針f。

5.指針數(shù)組

指針數(shù)組就是指該數(shù)組的數(shù)組元素是由指針變量構(gòu)成的。即每一個(gè)數(shù)組元素都是一個(gè)指針。

上例中,定義了一個(gè)指針pa,該指針指向的是一個(gè)有五個(gè)元素的數(shù)組,并且該數(shù)組的每一個(gè)元素都是整型變量。又定義了一個(gè)整型數(shù)組arr,有五個(gè)數(shù)組元素;最后將arr賦值給了pa,也就是將一個(gè)整型數(shù)組arr的地址賦值給了一個(gè)整型數(shù)組的指針怕。滿足賦值關(guān)系左右兩邊應(yīng)該保持一致性的條件。

6.結(jié)構(gòu)體類型指針

結(jié)構(gòu)體類型指針和基本數(shù)據(jù)類型指針變量類似,主要就是用來存儲結(jié)構(gòu)體類型變量的地址以及結(jié)構(gòu)體類型數(shù)組的地址,因此,我們可以采用間接方式來對對應(yīng)的變量與數(shù)組進(jìn)行操作。C語言中,結(jié)構(gòu)體類型指針變量能夠參與“+”“*”“++”“--”“,”“.”“,”“->”“&|”等運(yùn)算符的運(yùn)算。

上例中,首先定義了一個(gè)結(jié)構(gòu)體類型struct Teacher,在該結(jié)構(gòu)體中定義了一個(gè)整型變量num和字符型數(shù)組name,之后定義了一個(gè)結(jié)構(gòu)體類型struct Teacher的指針pa,以及該結(jié)構(gòu)體變量m,并將m的地址賦值給了指針pa,指針pa表示的是一個(gè)包含4個(gè)字節(jié)的地址,而結(jié)構(gòu)體變量m則表示是一個(gè)占有24個(gè)字節(jié)的實(shí)際存在的結(jié)構(gòu)體內(nèi)容。

三、指針在應(yīng)用過程中常見的錯(cuò)誤分析

1.指針變量的類型未事先聲明

與簡單變量一樣,指針變量在使用之前必須進(jìn)行聲明。聲明的格式為:類型標(biāo)識符 *變量名;表示定義了一個(gè)指針變量,并且說明了本指針變量指向變量的數(shù)據(jù)類型。值得注意的是,一個(gè)指針變量只能指向與它類型相同的變量。

2.使用未進(jìn)行初始化的指針

如果一個(gè)指針沒有進(jìn)行初始化的話,它的值是不確定的,也就是說,它的指向是不確定的。如果使用這樣的指針可能會給系統(tǒng)帶來災(zāi)難性的后果,系統(tǒng)不能正常運(yùn)行。

在上例中,指針pa未進(jìn)行初始化,應(yīng)該在循環(huán)語句for語句之前加上一條“pa=s”語句,從而初始化pa。

3.錯(cuò)誤的指針賦值

我們知道,指針變量存放的是一個(gè)內(nèi)存單元的地址,因此它的值只能是正整數(shù),決不能是一個(gè)負(fù)數(shù),和整數(shù)類型變量是有其區(qū)別的。

上例中,“pa=a1;”是一條錯(cuò)誤的賦值語句,應(yīng)改為“pa=&a1;”。

上例中,“pt=student();”語句是將student()函數(shù)的函數(shù)值賦值給指針變量pt,應(yīng)直接用函數(shù)名,應(yīng)改為“pt=student;”。

4.指針的運(yùn)算錯(cuò)誤

在定義函數(shù)時(shí),循環(huán)結(jié)構(gòu)中使指針指向下一結(jié)點(diǎn)的語句錯(cuò)誤。

其中w指向的是一個(gè)鏈表中的某個(gè)結(jié)點(diǎn),是動態(tài)分配的,不一定連續(xù),而w++只有當(dāng)w指向連續(xù)的存儲空間時(shí),w才指向下一元素。因此,用w++來表示下一個(gè)結(jié)點(diǎn)是不合適的。

5.數(shù)組中錯(cuò)誤使用指針變量

在指針運(yùn)算中,我們可以通過取內(nèi)容*運(yùn)算來得到數(shù)值,對于一個(gè)m級指針來說,進(jìn)行m次取內(nèi)容*運(yùn)算后得到的為數(shù)值,而進(jìn)行0到m-1次取內(nèi)容運(yùn)算結(jié)果都是地址。

上例中,a是一個(gè)二維數(shù)組名,與二級指針類似,*a表示地址,**a則表示整型數(shù)據(jù)。數(shù)組名a不能夠表示數(shù)組元素的首地址,而是表示有三個(gè)元素的第0行的地址,所以在編譯時(shí)會出現(xiàn)錯(cuò)誤。應(yīng)改為:p1=&a[0][0]或者p1=a[0]。

指針數(shù)據(jù)類型的應(yīng)用是C語言的精髓,論文僅僅分析了指針的一些常用形式,以及在應(yīng)用指針完成簡單程序編寫的過程中,容易出現(xiàn)的一些典型錯(cuò)誤,希望能使初學(xué)者更好地熟悉指針,并能更靈活地應(yīng)用指針完成簡單程序編寫。

[1]溫娟娟.C語言中指針的探討[J].河南職業(yè)技術(shù)師范學(xué)院學(xué)報(bào),2003,(3).

[2]高宏娟.C語言中“指針”的教學(xué)方法探討[J].科技信息,2011,(8).

[3]劉軍.C程序設(shè)計(jì)教學(xué)探討[J].電腦知識與技術(shù),2011,(18).

[4]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005.

猜你喜歡
定義
以愛之名,定義成長
活用定義巧解統(tǒng)計(jì)概率解答題
例談橢圓的定義及其應(yīng)用
題在書外 根在書中——圓錐曲線第三定義在教材和高考中的滲透
永遠(yuǎn)不要用“起點(diǎn)”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
嚴(yán)昊:不定義終點(diǎn) 一直在路上
定義“風(fēng)格”
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
有壹手——重新定義快修連鎖
修辭學(xué)的重大定義
主站蜘蛛池模板: 女人av社区男人的天堂| a级免费视频| 国产成人乱无码视频| 日日碰狠狠添天天爽| 秋霞国产在线| 又污又黄又无遮挡网站| 99re这里只有国产中文精品国产精品| 国产免费一级精品视频 | 99ri国产在线| 伊人久久久大香线蕉综合直播| 国产靠逼视频| 日韩免费毛片视频| 欧美精品亚洲日韩a| 日本成人福利视频| 精品成人免费自拍视频| 青青青国产视频| 亚洲无卡视频| 婷婷六月综合网| 精品久久久久久中文字幕女| 亚洲有码在线播放| 亚洲人成网站在线观看播放不卡| www.91中文字幕| 久久精品国产精品青草app| 伊人久久大香线蕉影院| 国产精品久久久久久搜索 | 日韩精品一区二区三区视频免费看| 欧美综合成人| 波多野结衣一区二区三区88| 亚洲福利视频网址| 97久久精品人人| 精品无码国产一区二区三区AV| 久久黄色免费电影| 中文字幕在线看视频一区二区三区| 2021国产精品自拍| 免费观看三级毛片| 99热这里只有精品在线观看| 天天综合亚洲| 国产精品任我爽爆在线播放6080| 国产高清在线丝袜精品一区| 国产免费福利网站| 亚洲精品天堂自在久久77| 99精品一区二区免费视频| 97国产在线播放| 国产精品亚洲天堂| 亚洲国产天堂久久综合| 青青青国产视频手机| 东京热高清无码精品| 午夜国产精品视频| 国产青榴视频在线观看网站| 亚洲精品欧美日韩在线| 成年午夜精品久久精品| 在线欧美一区| 国产超薄肉色丝袜网站| 国产精品丝袜在线| 久久国产免费观看| 亚洲国产欧美国产综合久久| 狠狠做深爱婷婷综合一区| 波多野结衣中文字幕久久| 国产成在线观看免费视频| 黄色网站在线观看无码| 丝袜亚洲综合| 狠狠色丁婷婷综合久久| 国产国产人免费视频成18| 激情五月婷婷综合网| 丁香五月激情图片| 国产亚洲视频在线观看| 国产成人久久777777| 日韩欧美成人高清在线观看| 99久久人妻精品免费二区| 免费国产在线精品一区| 亚洲国产中文在线二区三区免| 毛片网站在线播放| 精品人妻无码区在线视频| 亚洲成人播放| 国产美女91视频| 婷婷激情亚洲| 久久久久国色AV免费观看性色| 国产精品综合色区在线观看| 久久青草热| 国产成人精品高清不卡在线| 99资源在线| 中文无码精品a∨在线观看|