亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2013-01-11 09:11:30
        關(guān)鍵詞:數(shù)組賦值指針

        楊 杰

        (山西職業(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ù)都是存放在存儲(chǔ)器中的,一般把存儲(chǔ)器中的一個(gè)字節(jié)稱為一個(gè)內(nèi)存單元,不同的數(shù)據(jù)類型所占用的內(nèi)存單元數(shù)不等。如整型量占兩個(gè)單元,字符量占一個(gè)單元等。為了正確地訪問這些內(nèi)存單元,必須為每個(gè)內(nèi)存單元編上號(hào)。根據(jù)一個(gè)內(nèi)存單元的編號(hào),即可以準(zhǔn)確地找到該內(nèi)存單元。內(nèi)存單元的編號(hào)也叫地址。根據(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.二級(jí)指針

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

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

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

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

        上例中定義了一個(gè)整型指針f,該指針變量指向一個(gè)函數(shù),也就是存放了該函數(shù)在內(nèi)存中的存儲(chǔ)地址。定義了一個(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ù)類型指針變量類似,主要就是用來存儲(chǔ)結(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)識(shí)符 *變量名;表示定義了一個(gè)指針變量,并且說明了本指針變量指向變量的數(shù)據(jù)類型。值得注意的是,一個(gè)指針變量只能指向與它類型相同的變量。

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

        如果一個(gè)指針沒有進(jìn)行初始化的話,它的值是不確定的,也就是說,它的指向是不確定的。如果使用這樣的指針可能會(huì)給系統(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),是動(dòng)態(tài)分配的,不一定連續(xù),而w++只有當(dāng)w指向連續(xù)的存儲(chǔ)空間時(shí),w才指向下一元素。因此,用w++來表示下一個(gè)結(jié)點(diǎn)是不合適的。

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

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

        上例中,a是一個(gè)二維數(shù)組名,與二級(jí)指針類似,*a表示地址,**a則表示整型數(shù)據(jù)。數(shù)組名a不能夠表示數(shù)組元素的首地址,而是表示有三個(gè)元素的第0行的地址,所以在編譯時(shí)會(huì)出現(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í)與技術(shù),2011,(18).

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

        猜你喜歡
        數(shù)組賦值指針
        關(guān)于1 1/2 … 1/n的一類初等對稱函數(shù)的2-adic賦值
        L-代數(shù)上的賦值
        JAVA稀疏矩陣算法
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        偷指針的人
        強(qiáng)賦值幺半群上的加權(quán)Mealy機(jī)與加權(quán)Moore機(jī)的關(guān)系*
        為什么表的指針都按照順時(shí)針方向轉(zhuǎn)動(dòng)
        利用賦值法解決抽象函數(shù)相關(guān)問題オ
        尋找勾股數(shù)組的歷程
        基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
        電測與儀表(2015年5期)2015-04-09 11:30:42
        爱情岛永久地址www成人| 在线观看av国产自拍| 调教在线播放黄| 免费无遮挡毛片中文字幕| 在线观看高清视频一区二区三区 | 伊人精品无码AV一区二区三区| 国产性一交一乱一伦一色一情| 黑丝美女喷水在线观看| 日本一区二区三区四区高清不卡| 亚洲国产av无码精品无广告| 99精品久久精品一区二区| 国产成人一区二区三区影院动漫| 娇妻玩4p被三个男人伺候电影| 亚洲欧洲日产国码无码| 中文字幕高清视频婷婷| 夜夜躁狠狠躁日日躁视频| 丰满少妇愉情中文字幕18禁片| 国产女人18一级毛片视频| 精品国产97av一区二区三区| 国产一区二区熟女精品免费| 日韩一区av二区三区| 欧美熟妇另类久久久久久不卡| 播放灌醉水嫩大学生国内精品| 精品无码人妻久久久一区二区三区 | 欧美人与禽zozzo性伦交| 大肉大捧一进一出好爽视频mba| 国产成人精品日本亚洲18| 在线视频青青草猎艳自拍69| av中文字幕性女高清在线| 中出人妻希奇杰卡西av| 精品精品国产自在97香蕉| 国产成人综合色在线观看网站| 日韩AV无码免费二三区| 久久亚洲av午夜福利精品西区| 日本一区二区三区熟女俱乐部 | 激情乱码一区二区三区| 中文有码亚洲制服av片| 日韩在线一区二区三区免费视频 | 无码人妻精品一区二区在线视频| 国产成人8x视频网站入口| 国产白浆精品一区二区三区|