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

C語言中指針的應用分析

2013-01-11 09:11:30
太原城市職業技術學院學報 2013年1期
關鍵詞:定義

楊 杰

(山西職業技術學院,山西 太原 030006)

C語言是一種基本的程序設計語言,它包含了很多數據類型,其中指針是它的精髓,可以表示并實現非常復雜的數據結構。在應用C語言編程時,指針的使用頻率較高,有時甚至是解決問題的唯一途徑,而且可以通過應用指針來提高程序的運行速度。因此,是否能夠準確靈活地應用指針,是應用C語言編程的一個關鍵。

一、指針概念

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

二、常用的指針類型

1.基本類型指針

基本類型指針所指的數據類型是簡單的數據類型,可以是整型、實型、字符型。

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

2.指向數組的指針

該指針所指的數據類型是一個數組,該數組可以是一維數組、二維數組或多維數組。

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

3.二級指針

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

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

4.指向函數的指針

指向函數的指針就是指指針變量所指向的是函數的首地址,因此可以通過引用該指針變量來調用該函數。

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

5.指針數組

指針數組就是指該數組的數組元素是由指針變量構成的。即每一個數組元素都是一個指針。

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

6.結構體類型指針

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

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

三、指針在應用過程中常見的錯誤分析

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

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

2.使用未進行初始化的指針

如果一個指針沒有進行初始化的話,它的值是不確定的,也就是說,它的指向是不確定的。如果使用這樣的指針可能會給系統帶來災難性的后果,系統不能正常運行。

在上例中,指針pa未進行初始化,應該在循環語句for語句之前加上一條“pa=s”語句,從而初始化pa。

3.錯誤的指針賦值

我們知道,指針變量存放的是一個內存單元的地址,因此它的值只能是正整數,決不能是一個負數,和整數類型變量是有其區別的。

上例中,“pa=a1;”是一條錯誤的賦值語句,應改為“pa=&a1;”。

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

4.指針的運算錯誤

在定義函數時,循環結構中使指針指向下一結點的語句錯誤。

其中w指向的是一個鏈表中的某個結點,是動態分配的,不一定連續,而w++只有當w指向連續的存儲空間時,w才指向下一元素。因此,用w++來表示下一個結點是不合適的。

5.數組中錯誤使用指針變量

在指針運算中,我們可以通過取內容*運算來得到數值,對于一個m級指針來說,進行m次取內容*運算后得到的為數值,而進行0到m-1次取內容運算結果都是地址。

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

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

[1]溫娟娟.C語言中指針的探討[J].河南職業技術師范學院學報,2003,(3).

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

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

[4]譚浩強.C程序設計[M].北京:清華大學出版社,2005.

猜你喜歡
定義
以愛之名,定義成長
活用定義巧解統計概率解答題
例談橢圓的定義及其應用
題在書外 根在書中——圓錐曲線第三定義在教材和高考中的滲透
永遠不要用“起點”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
嚴昊:不定義終點 一直在路上
華人時刊(2020年13期)2020-09-25 08:21:32
定義“風格”
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
有壹手——重新定義快修連鎖
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
主站蜘蛛池模板: 亚洲日本中文字幕乱码中文| 亚洲,国产,日韩,综合一区 | 综合色天天| 又污又黄又无遮挡网站| 美女免费精品高清毛片在线视| 一区二区三区成人| a国产精品| 亚洲第一网站男人都懂| 青青草国产免费国产| 一区二区三区国产精品视频| 福利国产在线| 毛片在线播放a| 国产亚洲欧美在线人成aaaa| 国产人人干| 亚洲黄网在线| 久久公开视频| 精品日韩亚洲欧美高清a| 国产精品精品视频| 国产精品免费p区| 国产高清免费午夜在线视频| 欧美一级片在线| 国产丰满成熟女性性满足视频| 亚洲性视频网站| 国产亚洲欧美日韩在线观看一区二区| 伊人婷婷色香五月综合缴缴情| 在线播放国产99re| 亚洲 欧美 日韩综合一区| 国产区免费| 再看日本中文字幕在线观看| 国产精品亚洲综合久久小说| 日本成人精品视频| 人妻一区二区三区无码精品一区| 亚洲成人黄色网址| 亚洲天堂免费| 国内丰满少妇猛烈精品播| 久久国产V一级毛多内射| 日本久久免费| 亚洲欧美日韩成人高清在线一区| 亚洲欧美日韩天堂| 国产精品蜜臀| 中文字幕人成乱码熟女免费| 久久久久无码精品| 日本欧美中文字幕精品亚洲| 亚洲人成影院午夜网站| 国产微拍精品| 久久99国产精品成人欧美| 91香蕉国产亚洲一二三区| 91久久偷偷做嫩草影院电| 香蕉在线视频网站| 国产伦精品一区二区三区视频优播| 亚洲三级电影在线播放| 国产成人免费观看在线视频| 在线精品亚洲一区二区古装| 国产综合色在线视频播放线视| 中文字幕1区2区| 亚洲一区色| 免费AV在线播放观看18禁强制| 操国产美女| www.日韩三级| 无码高潮喷水专区久久| 日韩精品视频久久| 国产香蕉97碰碰视频VA碰碰看| 日本www在线视频| 亚洲一级无毛片无码在线免费视频 | 国产精品香蕉在线| 国产视频a| 大陆精大陆国产国语精品1024| 99视频在线精品免费观看6| 欧美va亚洲va香蕉在线| 日本免费精品| 真人免费一级毛片一区二区| 中文国产成人精品久久| 久久超级碰| 久久精品aⅴ无码中文字幕 | 不卡午夜视频| 精品国产亚洲人成在线| 国产办公室秘书无码精品| 日韩人妻精品一区| 国产乱人伦精品一区二区| 国产在线观看一区精品| 91午夜福利在线观看| 在线欧美一区|