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

C語言指針的應用

2009-04-29 00:00:00王美榮
電腦知識與技術 2009年35期

摘要:指針是C語言的靈魂,是C語言的精華和重要特色,理解指針的概念應從計算機存儲系統硬件結構入手。它是C語言學習的重點和難點,也是學好C語言的關鍵,針對學生在學習指針過程中遇到的困難及使用指針過程中出現的常見錯誤,該文從指針的定義、指針的基本操作、指針與其他數據類型的關系等方面對指針做詳細分析,以助學習者更好的理解與記憶。

關鍵詞:C程序設計;指針;數組;函數;字符串;內存地址;變量參數

中圖分類號:TP3112文獻標識碼:A文章編號:1009-3044(2009)35-9982-02

指針是C語言的一個重要概念。由于指針的概念比較抽象,使用起來又相對靈活,因而正確理解和運用指針就成了C語言程序設計的一個難點,掌握好指針,可以增強學生閱讀C程序的能力,可以使程序變得簡潔、緊湊和高效,同時也讓學生對“ 駕馭了” 計算機產生一種自豪感,為日后更進一步的學習奠定良好的基礎。

計算機內存中的每個存儲單元,都有一個相應編號,叫做內存地址。若在程序中定義了一個變量,C編譯系統就會根據定義中變量的類型。為其分配一定字節數的內存空間。同時建立一個變量名與地址間的對應關系。變量值就存放于該地址的內存單元中。而指針(即地址)也是一種數據類型,指針變量是只能存放地址類型數據的變量,我們把存放指針的變量稱為指針變量,簡稱指針。這個變量和基本變量的不同點就在于基本類型變量內部存儲了同類型的常量,而指針變量內部存儲的則是“同類型變量的首地址”(所指向的變量的地址)。

在C語言中,訪問數據對象一般采用直接訪問的方法,而引入指針變量的目的則是用來間接訪問數據對象,這種訪問的特點是先找到存放數據的地址,然后通過該地址來訪問數據。

指針變量的定義:基類型 *指針變量名;

此處的“*”要與指針運算符“*”區分開,前者用來標示所定義的變量是指針變量,只起到標志的作用;而后者是一個運算符,用于取該指針變量所指向的變量。無論什么樣的基類型,指針變量本身所占內存大小一般是固定的,與CPU的地址總線寬度及計算機的系統總線有關。指針變量可以指向變量,也可以指向數組、字符串,還可以指向函數。使用時要切記:一定要讓指針變量指向同類型的數據。

1 指針的基本操作

指針的基本操作包括指針賦值、取地址、判斷指針是否為空、計算兩地址間相隔元素的個數、操作符“-”或“+”運算以及指針操作符綜合運用等。

指針賦值、取地址運算在指針運用中比較普遍,如int i=5;int *ip=i;判斷指針是否為空可以用語句if(ip==0)或if(ip==NULL),其中ip為指針變量。

指針“-”或“+”一個整數n,表示將指針由當前位置移動到前面(或后面)的第n個數據處。兩指針相減的結果是兩指針之間相隔數據的個數,結果是一個整數,而不是地址。如:int a[10];int *x=a,*y=a;則x+2表示將指針x由指向a數組中第一個元素改為向后移動兩個數據,即指向第三個元素。而x-y的結果是x與y這兩個指針之間相隔數據的個數,等于2。利用這個特點,若將y指向數組a的首地址,將x移到a數組的末尾,則用x-y就可以求出數組a的長度,即a中數據的個數。

2 指針與數組的關系

指針常用于數組中,數組名本身是一個指向該數組首地址的常量指針。在應用時把數組名賦值給指針,通過指針的運算可以定位到數組中的任一元素。應用指針和數組的方式都可以訪問數組中的元素,但二者的訪問效率并不一樣。指向同一數組的兩個指針變量可作減法(結果為相隔的元素個數)及關系運算。

如:int a[5]={1,2,3,4,5},*p;

語句:for(p=a;p

使用指針法訪問數組元素時,要注意“下標是否越界”的問題。如p+5表示指向a數組中的第6個整型單元,此時已超出a數組的有效范圍。所取得的數據顯然是無意義的。但C編譯系統并不指出“下標越界”這樣的錯誤。所以使用者在使用時應注意指針變量所指向的位置。

3 指針與函數的關系

指針與函數的關系有三種:

第一種關系:指針作為函數的參數,可用于傳遞變量的地址或數組的首地址。此時,我們將實參指針值單向傳遞給形參變量,則實參和形參指向同一個空間,調用函數可以改變該空間的內容。若傳遞的是數組的首地址則可以改變實參數組中元素的值。另外,普通函數調用只可以得到一個返回值(即函數值),而運用指針變量作為函數參數可以通過一次函數的調用改變多個變量的值,如果不用指針是難以做到這一點的。

第二種關系:函數的返回值是指針。定義方式:數據類型 *函數名(參數列表){函數體}

第三種關系:指向函數的指針變量。定義方式:數據類型( *指針變量名)(參數列表)

要注意區分上述兩種情況。

4 指向指針的指針變量

指針變量既然是變量,當然也會有自己的內存地址,當然也就可以被別的指針變量所指向了,此時別的指針變量就是指向指針的指針變量(二級指針)。

指向指針的指針變量的定義格式:基類型 指針變量名;

如int **p;這種用法主要是為了在函數中改變指針實參和應用于多個字符串構成的二維字符數組。

如:void pad(int **PP){( *pp)++;}

int a[5]={1,2,3,4,5},*p;p=a;pad(p);

P的值被改變,指向下一個元素2,因為padO中的pp指向P,*pp即為p,(*pp)++即為p++。它們的指向關系為:

圖1

指針是c語言中重要的概念,是c的一個特色利用它可以編寫出頗有特色的、質量優良的程序,實現許多其他高級語言難以實現的功能。但指針的使用太靈活,也十分容易出錯,因此使用指針時要十分小心,并且在編程過程中不斷掌握指針的使用技巧,通過實踐中的不斷摸索才能準確無誤地駕馭指針,讀者應該多多思考,多多上機操作,體會其中的奧妙。

參考文獻:

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

[2] 王聲決,羅堅.c語言程序設計[M].北京:中國鐵道出版社,2002.

[3] 王建平.C語言程序設計[M].北京:中國水利水電出版社,2001.

[4] 林東.編程語言基礎 C語言[M].2版.北京:高等教育出版社,2006.

主站蜘蛛池模板: 亚洲第一福利视频导航| 国产精品午夜福利麻豆| 亚洲国产日韩一区| 凹凸精品免费精品视频| 色综合五月| 国模私拍一区二区| 99久久精品视香蕉蕉| 国产人碰人摸人爱免费视频| 在线免费观看AV| 东京热高清无码精品| 亚洲AⅤ波多系列中文字幕| 国产成人精品视频一区视频二区| 亚洲欧美成aⅴ人在线观看| 国产无遮挡裸体免费视频| 永久天堂网Av| 国产在线专区| 色综合天天视频在线观看| 亚洲精品午夜天堂网页| 欧美日韩综合网| 欧美乱妇高清无乱码免费| 国产另类视频| 国产成人免费观看在线视频| 亚洲av片在线免费观看| 久久五月天综合| 喷潮白浆直流在线播放| 国产黄色视频综合| 国产本道久久一区二区三区| 97se亚洲综合| 亚洲色图欧美| 亚洲欧洲AV一区二区三区| 美女啪啪无遮挡| 欧美.成人.综合在线| 人妻中文久热无码丝袜| 91九色最新地址| 欧美另类一区| 国产毛片高清一级国语| 国产综合精品日本亚洲777| 国产精品人莉莉成在线播放| 国产激爽大片高清在线观看| 国产午夜精品鲁丝片| 亚洲成在线观看 | 992Tv视频国产精品| 99在线免费播放| 全部免费毛片免费播放| 国产精品精品视频| 国产正在播放| 青青青国产精品国产精品美女| 久久毛片基地| 亚洲性色永久网址| 国产精品视频白浆免费视频| 91年精品国产福利线观看久久| 美女被操91视频| 国产免费怡红院视频| 国内熟女少妇一线天| 国模沟沟一区二区三区| 国产美女精品一区二区| 国产精品嫩草影院av| 啪啪免费视频一区二区| 色婷婷狠狠干| 午夜小视频在线| 无码AV动漫| 国产96在线 | 尤物特级无码毛片免费| 3D动漫精品啪啪一区二区下载| 色综合综合网| 毛片一区二区在线看| 99re这里只有国产中文精品国产精品| 久草视频中文| 免费一看一级毛片| 国产精品lululu在线观看| 国产精品福利导航| 免费福利视频网站| 国产精品成| 国产毛片基地| 国产又黄又硬又粗| 亚洲精品天堂在线观看| 国产在线观看99| 日韩不卡免费视频| 国产精品自在线拍国产电影 | 国产精品无码AⅤ在线观看播放| 亚洲成年网站在线观看| 最新国产精品鲁鲁免费视频|