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

        ?

        C++語(yǔ)言中指針變量與數(shù)組的關(guān)系剖析*

        2010-09-09 08:02:28黃國(guó)軍
        關(guān)鍵詞:數(shù)組指針指向

        黃國(guó)軍

        (黃岡職業(yè)技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,湖北黃岡438002)

        C++語(yǔ)言中指針變量與數(shù)組的關(guān)系剖析*

        黃國(guó)軍

        (黃岡職業(yè)技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,湖北黃岡438002)

        C++語(yǔ)言中的指針變量和數(shù)組的關(guān)系非常密切。掌握指針變量與數(shù)組的關(guān)系是學(xué)好C++語(yǔ)言課程的難點(diǎn),也是重點(diǎn)。就不同級(jí)別的指針變量與不同維數(shù)的數(shù)組之間的關(guān)系進(jìn)行剖析,以便明確教學(xué)重難點(diǎn)。

        指針變量;地址;數(shù)組

        1 引言

        運(yùn)用指針編程是C++語(yǔ)言最主要的風(fēng)格之一,指針極大豐富了C++語(yǔ)言的功能。指針就是地址,指針變量是專門(mén)存放地址的變量;一個(gè)數(shù)組的數(shù)組名表示該數(shù)組在內(nèi)存中存放的地址,地址就是指針,故數(shù)組名也是指針;在C++語(yǔ)言中能進(jìn)行地址操作的除了指針變量外還有數(shù)組名。指針從級(jí)別上來(lái)講常用的有一級(jí)指針、二級(jí)指針。一級(jí)指針每次加1表示下移一個(gè)基類型的字節(jié)數(shù)(列移動(dòng));二級(jí)指針每次加1表示下移一組基類型的字節(jié)數(shù)(行移動(dòng))。從性質(zhì)來(lái)講有常量指針與變量指針。常量指針就是數(shù)組名,它的值是不能改變的,不能放在賦值符號(hào)的左邊。變量指針的值是允許被改變的,可以根據(jù)需要在程序的不同位置賦不同的值。為方便后面的講述,現(xiàn)假設(shè)有如下定義語(yǔ)句:

        從級(jí)別上來(lái)分,一級(jí)指針有pa和a;二級(jí)指針有pb、pc、pd和b。從性質(zhì)來(lái)分常量指針有a、b、pc;變量指針有pa、pb、pd。下面分別就它們間的關(guān)系進(jìn)行討論。

        2 一級(jí)指針變量與一維數(shù)組

        pa是一級(jí)指針變量,它的值可以被改變;而a是一級(jí)指針常量,它始終代表數(shù)組a中首元素的地址,其值不能改變。當(dāng)通過(guò)語(yǔ)句pa=a或pa=&a [0]讓指針變量pa與一維數(shù)組a建立了如圖1所示關(guān)系。

        圖1一級(jí)指針變量pa與一維數(shù)組a

        對(duì)數(shù)組a中第i(0≤i≤4)個(gè)元素的訪問(wèn)有四種形式a[i]、pa[i]、*(a+i)和*(pa+i)。它們之間是等價(jià)關(guān)系,可以相互替換。p是一個(gè)指針變量,它可以通過(guò)與自增運(yùn)算符++或自減運(yùn)算符——相結(jié)合來(lái)訪問(wèn)所指數(shù)組中的每一個(gè)元素;而a是一個(gè)指針常量,故不能。對(duì)數(shù)組a中第i個(gè)元素的地址的表示有a+i與p+i兩種表示形式。由于指針變量pa與數(shù)組名a都是一級(jí)指針,只要pa始終指向數(shù)組a的首元素,它們的關(guān)系是等價(jià)的,在出現(xiàn)數(shù)組名a的地方都可以用pa替換。

        3 一級(jí)指針變量與二維數(shù)組

        一級(jí)指針變量pa可以訪問(wèn)二維數(shù)組b。二維數(shù)組b中的元素在內(nèi)存中是按行存放的,它首先按從左到右的順序在內(nèi)存中存放第一行的元素后,再按從左到右的順序存放第二行元素,如圖所示:b [0][0]的下一個(gè)元素是b[0][1],b[0][3]的下個(gè)元素是b[1][0]。當(dāng)通過(guò)語(yǔ)句pa=b或pa=&b[0] [0]讓一級(jí)指針變量pa指向二維數(shù)組b的首元素后,它們的關(guān)系如圖2所示。

        對(duì)二維數(shù)組b中第i(0≤i≤2)行j(0≤j≤3)列元素的訪問(wèn)有b[i][j]、pa[i*4+j]、*(*(b+i)+ j)和*(pa+i*4+j)四種形式。在通過(guò)鍵盤(pán)給數(shù)組b中的逐個(gè)元素格式化賦值時(shí),訪問(wèn)的是它們的地址;對(duì)數(shù)組b中第i(0≤i≤2)行j(0≤j≤3)列元素的地址的表示有*(b+i)+j、b[i]+j、p+i*4+ j三種表示形式。由于pa是一級(jí)指針而b是二級(jí)指針,一個(gè)是按列移動(dòng),另一個(gè)按行移動(dòng),它們是不等價(jià)的,這就決定了在數(shù)組名b出現(xiàn)的地方如果用pa來(lái)替換必須進(jìn)行一定的處理。

        圖2一級(jí)指針變量pa與二維數(shù)組b

        4 二級(jí)指針變量與二維數(shù)組

        C++語(yǔ)言中,二級(jí)指針變量與二維數(shù)組名都是二級(jí)指針。它們之間能否建立關(guān)系的首要條件要看二級(jí)指針變量能否確定它所指向二維數(shù)組的列寬,次要條件是二級(jí)指針變量所指的一維數(shù)組的元素個(gè)數(shù)與二維數(shù)組的列寬是否相等,兩者缺一不可。

        二級(jí)指針變量有指向指針的指針變量pb和指向一維數(shù)組的指針變量pd。二級(jí)指針變量pb一般存放另一個(gè)一級(jí)指針變量的地址。因?yàn)槎?jí)指針變量pb不能確定它所指向的二維數(shù)組的列寬,所以它不能與一個(gè)二維數(shù)組建立指向關(guān)系。

        圖3指向一維數(shù)組的指針變量pd與二維數(shù)組b

        從上面的定義可以看出指向一維數(shù)組的指針變量pd所指一維數(shù)組含有4個(gè)元素,二維數(shù)組b中的列寬為4??梢酝ㄟ^(guò)語(yǔ)句pd=b或pd=&b[0] [0]讓一維數(shù)組的指針變量pd與二維數(shù)組b建立指向關(guān)系。對(duì)二維數(shù)組b中第i(0≤i≤2)行j(0≤j≤3)列元素的訪問(wèn)有①b[i][j]②pd[i][j]③*(*(b+i)+j)④*(*(pd+i)+j))四種形式。在通過(guò)鍵盤(pán)給數(shù)組b中的逐個(gè)元素格式化賦值時(shí),訪問(wèn)的是它們的地址;對(duì)數(shù)組b中第i(0≤i≤2)行j(0≤j≤3)列元素的地址的表示有*(b+i)+j、b[i] +j、*(pd+i)+j、pd[i]+j三種表示形式。pd和b都是二級(jí)指針,都是按列移動(dòng),它們是等價(jià)的,如果pd始終指向數(shù)組b的首首行,則在數(shù)組名b出現(xiàn)的地方都能用用pd替換,它們是等價(jià)的。

        5 結(jié)束語(yǔ)

        通過(guò)上述對(duì)指針變量與數(shù)組關(guān)系的分析,其結(jié)果可以歸納如下:當(dāng)一級(jí)指針變量指向一維數(shù)組首元素后,只要不改變指針變量的值,所有要一維數(shù)組名出現(xiàn)的地方都能用指針變量名替換,它們間是等價(jià)的。當(dāng)一級(jí)指針變量指向二維數(shù)組的首元素后,由于級(jí)別的不同(一個(gè)列移動(dòng),一個(gè)是行移動(dòng)),這就決定了在數(shù)組名出現(xiàn)的地方如果用一維指針來(lái)替換必須進(jìn)行一定的處理,它們間是不等價(jià)的。二級(jí)指針變量與二維數(shù)組名都是二級(jí)指針。它們之間能否建立關(guān)系的首要條件要看二級(jí)指針變量能否確定它所指向二維數(shù)組的列寬,次要條件是二級(jí)指針變量所指的一維數(shù)組的元素個(gè)數(shù)與二維數(shù)組的列寬是否相等,兩者缺一不可。

        [1]崔武子.C++語(yǔ)言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2008-02.

        [2]向華.C++語(yǔ)言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2008-06.

        Analysis on Relationship between Pointer V ariables and Arrays in C++Language

        HUGNG Guo-jun
        (Huanggang Polytechnic College,Huanggang438002Hubei)

        The relationship between the pointer variable and array is very closely related in C++language.It is the difficult point to master the relationship between the variables and arraysfor learning C++language well,which is also key point.In order to clarify the importance and difficulties in teaching,the author analyzed the relationship between the pointer variables of different levels and different dimensions of the arrays.

        Pointer variables;Address;Array

        TP314

        A

        1672-1047(2010)03-0009-02

        10.3969/j.issn.1672-1047.2010.03.03

        [責(zé)任編校:郭杏芳]

        2010-4-20

        黃國(guó)軍(1972-),男,碩士,講師。hgjcpp@hgpu.edu.cn

        猜你喜歡
        數(shù)組指針指向
        JAVA稀疏矩陣算法
        科學(xué)備考新指向——不等式選講篇
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        偷指針的人
        把準(zhǔn)方向盤(pán) 握緊指向燈 走好創(chuàng)新路
        為什么表的指針都按照順時(shí)針?lè)较蜣D(zhuǎn)動(dòng)
        尋找勾股數(shù)組的歷程
        基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
        ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
        VB數(shù)組在for循環(huán)中的應(yīng)用
        考試周刊(2012年88期)2012-04-29 04:36:47
        国产黄色av一区二区三区| 欧美日韩中文字幕日韩欧美| 亚洲国产精一区二区三区性色| 日本视频一区二区三区在线观看| 久久99国产精品久久99果冻传媒| 区久久aaa片69亚洲| 亚洲AV秘 无码一区二区三区| 日本一区二区三区在线视频播放| 狠狠色噜噜狠狠狠777米奇| 亚洲高潮喷水无码av电影| 亚洲一区二区久久青草| 成人影院羞羞的视频免费观看| 四虎成人精品在永久免费| 日本边添边摸边做边爱的网站| 精品午夜一区二区三区久久| 国产亚洲一区二区精品| 私人vps一夜爽毛片免费| 国产裸体歌舞一区二区| 国产精品一区成人亚洲| 国产剧情av麻豆香蕉精品| 中文字幕无码毛片免费看| 欧美成aⅴ人高清免费| 精品少妇人妻久久免费| 国产精品国产三级国产密月| 无码人妻精品丰满熟妇区| 欧美日韩性高爱潮视频| 91久久大香伊蕉在人线国产| 丰满熟妇人妻av无码区| 欧美日韩不卡视频合集| 蜜桃一区二区免费视频观看| 久草视频这里只有精品| 久久精品国产亚洲7777| 在线观看国产高清免费不卡黄| 亚洲视频在线视频在线视频| 国产成人精品无码免费看| 亚洲av无码一区二区二三区| 亚洲熟妇av日韩熟妇av| 中文字幕乱码熟女人妻在线| 亚洲色大成网站www久久九| 对白刺激的老熟女露脸| 免费国产一区二区视频|