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

        ?

        談C語言中指針、地址和數(shù)組的相互關(guān)系

        2009-03-02 09:33:14劉林香許燕青江忠君
        新媒體研究 2009年2期
        關(guān)鍵詞:定義

        劉林香 許燕青 江忠君

        [摘要]在學(xué)習(xí)C語言過程中,指針、地址和數(shù)組是最富有特色的內(nèi)容,特別是指針、地址和數(shù)組之間相互關(guān)系更具有特色。掌握它們之間的相互關(guān)系將有助于C語言其他內(nèi)容的學(xué)習(xí),因此學(xué)好這部分內(nèi)容是掌握C語言的關(guān)鍵。主要用圖示法闡述指針和地址、指針和數(shù)組之間的聯(lián)系。

        [關(guān)鍵詞]C語言 指針 地址 數(shù)組 圖示法

        中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1671-7597(2009)0120049-01

        指針是C語言中一個最重要概念之一,指針變量是用來存放另外一個變量地址,通過指針變量可以間接引用另外一個變量的內(nèi)容。數(shù)組是由若干個元素按一定順序關(guān)系組合而成的集合體,即數(shù)組中的每一個元素都屬于同一個數(shù)據(jù)類型,數(shù)組名則是數(shù)組元素的首地址,用戶在編程中用一個數(shù)組名和下標(biāo)來唯一確定數(shù)組中的每一個元素。所以,指針、地址和數(shù)組以及它們之間的相互關(guān)系構(gòu)成C語言最有特色部分。

        一、指針和地址

        (一)指針變量的定義

        在程序中定義了一個變量,那么在計算機(jī)內(nèi)不僅定義了該變量的類型、名稱,而且還在內(nèi)存中分配了一塊存儲區(qū)域,這塊存儲區(qū)域的首地址稱為該變量的指針。變量的值就存放在這塊區(qū)域之中,在計算機(jī)內(nèi)部,通過訪問或修改這塊區(qū)域的內(nèi)容來訪問或修改相應(yīng)的變量。Turbo C語言中,對于變量的訪問形式之一,就是先求出變量的地址,然后再通過地址對它進(jìn)行訪問。

        指針變量的一般定義為:

        類型標(biāo)識符*標(biāo)識符;

        其中“標(biāo)識符”是指針變量的名字,標(biāo)識符前加了“*”號,表示該變量是指針變量,而最前面的“類型標(biāo)識符”表示該指針變量所指向的變量的類型。一個指針變量只能指向同一種類型的變量,也就是說,我們不能定義一個指針變量,既能指向一整型變量又能指向雙精度變量。如定義了一個指針變量int*ip;說明該指針變量ip為指向整數(shù)的指針,用它存放整型變量的地址。

        (二)指針變量的引用

        指針變量中只能存放地址,因此,在使用中不能將一個整數(shù)賦給一指針變量。如:

        int *ip;ip=80;這種賦值是錯誤的??梢赃@樣定義:

        int i=100,x;int *ip;

        定義了兩個整型變量i,x,還定義了一個指向整數(shù)的指針變量ip。i,x中可存放整數(shù),而ip中只能存放整型變量的地址。通過地址運算“&”可以把i的地址賦給ip:

        ip=&i

        此時指針變量ip就指向整型變量i,假設(shè)變量i的地址為1600,這個賦值可理解為圖1所示的聯(lián)系。

        可以通過指針變量ip間接訪問變量i,如:

        x=*ip;

        運算符*訪問以ip為地址的存儲區(qū)域,而ip中存放的是變量i的地址,因此,*ip訪問的是地址為1600的存儲區(qū)域,它就是i所占用的存儲區(qū)域,所以上面的賦值表達(dá)式等價于

        x=i;

        另外,指針變量和一般變量一樣,存放在它們之中的值是可以改變的,也就是說可以改變它們的指向,假設(shè)

        Int i,j,*p1,*p2;

        i=10 ;

        j=20 ;

        p1=&i

        p2=&j

        通過圖示法闡述如下:

        如圖2所示,采用圖示法展示出普通變量i、j和指針變量p1、p2之間的關(guān)系,指針其實是內(nèi)存地址,而內(nèi)存中的單元是按字節(jié)編址(每個地址編碼對應(yīng)一個字節(jié)空間),從圖中可以看出整型變量i和j分別占用兩個字節(jié)的內(nèi)存空間。同時也可以看出每個指針變量也是占用兩個字節(jié)的空間,因為每個指針變量都是存儲一個地址碼。

        通過指針訪問它所指向變量的值是以間接訪問的形式進(jìn)行的,所以比直接訪問一個變量要多費時間,而且不直觀,因為通過指針要訪問哪一個變量,取決于指針的值(即指向),例如“*p2=*p1;”實際上就是“j=i;”,前者不僅速度慢而且目的不明。但由于指針是變量,可以通過改變它們的指向,以間接訪問不同的變量的值,這給程序員帶來靈活性,也使程序代碼編寫得更為簡潔、高效。

        二、指針和數(shù)組

        指針和數(shù)組有著密切的關(guān)系,任何能由數(shù)組下標(biāo)完成的操作也都可用指針來實現(xiàn),而且使用指針處理數(shù)據(jù),有助于產(chǎn)生占用空間小,運行速度快且高質(zhì)量的目標(biāo)代碼。

        (一)指向數(shù)組元素的指針

        在C語言中,數(shù)組的指針就是數(shù)組的起始地址(也就第一個元素的地址),如:

        int a[10],*p;

        對于數(shù)組a[i]表示數(shù)組a的第i+1個變量,a是數(shù)組名表示該數(shù)組的首地址,為常量,即a與&a[0]等價,而p=a則將數(shù)組a的首地址&a[0]賦給指針變量p。通過p來訪問數(shù)組元素時要注意以下問題:

        1.P,a與&a[0]它們是等價的,都表示數(shù)組a的首地址。

        2.p[i]和a[i]都是代表該數(shù)組的第i+1個元素。

        3.p+i和a+i代表了第i+1個元素的地址,所以我們也可以使用*(p+i)和*(a+i)來引用對象元素。

        4.表達(dá)式p+1為指向p的下一個存儲單元,即a[0]下一個元素a[1]的存儲單元,也就是p+1等價于&a[1]。

        (二)指向二維數(shù)組的指針

        為了說明問題,假設(shè)有如下程序段:

        int a[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}},i,j,*p;

        P=&a[0][0];

        A為二維數(shù)組名,此數(shù)組有3行5列,共15個元素。也可這樣來理解,數(shù)組a由三個元素組成:a[0],a[1],a[2]。而每個元素又是一個一維數(shù)組,且都含有5個元素(相當(dāng)于5列),例如,a[0]所代表的一維數(shù)組所包含的5個元素為a[0][0],a[0][1],a[0][2],a[0][3],a[0][4]。數(shù)組名a也代表二維數(shù)組的首地址,也可看成是二維數(shù)組第0行的首地址。a+1就代表第1行的首地址,a+2就代表第2行的首地址。如果此二維數(shù)組的首地址為1000,由于第0行有5個整型元素,所以a+1為1010,a+2也就為1020,如圖3所示。

        把a(bǔ)[0],a[1],a[2]看成是一維數(shù)組名,可以認(rèn)為它們分別代表它們所對應(yīng)的數(shù)組的首地址,也就是講,a[0]代表第0行中第0列元素的地址,即&a[0][0],a[1]是第1行中第0列元素的地址,即&a[1][0],根據(jù)地址運算規(guī)則,a[0]+1即代表第0行第1列元素的地址,即&a[0][1],a[i]+j即代表第i行第j列元素的地址,即&a[i][j]。將指針p指向二維數(shù)組a的首地址,p+1就指向下一個元素,由于每行5個元素,p+i*5+j就是第i行第j列元素的地址。

        參考文獻(xiàn):

        [1]譚浩強(qiáng),C程序設(shè)計(第二版),北京:清華大學(xué)出版社,1999.

        [2]嚴(yán)桂蘭,C語言程序設(shè)計與應(yīng)用教程,福建:廈門大學(xué)出版社,2001.

        猜你喜歡
        定義
        以愛之名,定義成長
        活用定義巧解統(tǒng)計概率解答題
        例談橢圓的定義及其應(yīng)用
        題在書外 根在書中——圓錐曲線第三定義在教材和高考中的滲透
        永遠(yuǎn)不要用“起點”定義自己
        海峽姐妹(2020年9期)2021-01-04 01:35:44
        嚴(yán)昊:不定義終點 一直在路上
        華人時刊(2020年13期)2020-09-25 08:21:32
        定義“風(fēng)格”
        成功的定義
        山東青年(2016年1期)2016-02-28 14:25:25
        有壹手——重新定義快修連鎖
        修辭學(xué)的重大定義
        五月激情在线视频观看| 午夜精品一区二区三区无码不卡| 波多野无码AV中文专区| 快射视频网站在线观看| 免费在线黄色电影| 国产免费av片在线观看播放| 精品一区二区av天堂| 久久偷拍国内亚洲青青草| 久久久久99精品成人片欧美| 九九精品国产亚洲av日韩| 深夜国产成人福利在线观看女同| 三级日本午夜在线观看| av网站在线观看入口| 久久久午夜精品福利内容 | 亚洲一区二区欧美色妞影院| 久久午夜伦鲁片免费无码| 国产精品午夜波多野结衣性色| 久久综合加勒比东京热| 国产 一二三四五六| 亚洲欧美另类激情综合区| 日韩精品一区二区三区毛片| 国产又黄又湿又爽的免费视频| 亚洲av香蕉一区区二区三区| 国产精品永久免费视频| 国产成人久久精品流白浆| 国产亚洲91精品色在线| 女人被弄到高潮的免费视频| 国产一级大片免费看| 综合人妻久久一区二区精品| 亚洲一区二区三区免费网站| 夜夜春亚洲嫩草影院| 欧美丰满熟妇bbbbbb百度| 麻美由真中文字幕人妻| 日本视频一区二区三区一| 俄罗斯老熟妇色xxxx| 极品诱惑一区二区三区| 精品亚洲国产日韩av一二三四区 | 国产亚洲中文字幕久久网| 欧美成人看片一区二区三区尤物| 18无码粉嫩小泬无套在线观看| 久久久99精品成人片中文字幕|