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

        ?

        淺析C指針和一維、二維數(shù)組之間的關(guān)系

        2017-11-15 11:28:53張龍波
        電腦知識與技術(shù) 2017年28期
        關(guān)鍵詞:數(shù)組指針函數(shù)

        張龍波

        摘要:指針是C語言的靈魂;熟練掌握指針的使用方法就可以直接操縱內(nèi)存,使得程序的執(zhí)行效率得到極大提高,從而我們可以編制出高效、簡潔、優(yōu)秀的指令代碼。根據(jù)實(shí)踐教學(xué)經(jīng)驗(yàn),仍有較多C語言學(xué)習(xí)者對指針和數(shù)組二者之間的關(guān)系掌握的不夠清晰,下面力求通過最簡潔、最高效的敘述方式,使大家耳目一新,豁然開朗!

        關(guān)鍵詞:指針;數(shù)組;數(shù)組指針;函數(shù)

        中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)28-0071-02

        1 C指針和一維數(shù)組之間的關(guān)系

        首先分析一維數(shù)組中每個數(shù)組元素在內(nèi)存中的存儲狀態(tài):假設(shè)有一整型數(shù)據(jù)類型的一維數(shù)組a,其定義及初始化語句如下:“int a[4]={-1,2,-3,4};”。其在內(nèi)存中的邏輯狀態(tài)存儲示意圖如下所示(以表格形式展示):

        (各個數(shù)組元素值會從高字節(jié)地址到低字節(jié)地址、按其補(bǔ)碼格式存入內(nèi)存單元格)

        因?yàn)槠胀ǖ闹羔樧兞恐荒苤赶蛳嗤瑪?shù)據(jù)類型的普通變量!數(shù)組元素的本質(zhì)就是一個一個的普通變量,所以我們可以定義一個整型指針變量p,讓它指向數(shù)組a的第一個數(shù)組元素:int* p=&a[0];//或“int* p=a;”。至此,我們可以通過main1函數(shù)清晰、直觀地觀察到數(shù)組a中元素在內(nèi)存中的存儲狀態(tài)。

        這里需要強(qiáng)調(diào)的是數(shù)組名a是一個指針常量,其值是固定的,不可以修改(如上方表格中的一維數(shù)組名a等價于&a[0],等價于0x18FF1001),而p是一個指針變量,其值是可以修改的!如果代碼中出現(xiàn)a++、++a、a—、—a都是錯誤的!

        2 C指針和二維數(shù)組之間的關(guān)系

        首先分析二維數(shù)組中每個數(shù)組元素在內(nèi)存中的存儲狀態(tài):假設(shè)有一整型數(shù)據(jù)類型的二維數(shù)組a,其定義及初始化語句如下:“int b[2][2]={{10,-20},{30,-40}};”。其在內(nèi)存中的邏輯狀態(tài)存儲示意圖如下所示(以表格形式展示,請注意,C語言編譯器是按行逐一將元素在內(nèi)存中存儲表示的?。?/p>

        前已敘述:普通的指針變量只能指向相同數(shù)據(jù)類型的普通變量!數(shù)組元素的本質(zhì)就是一個一個的普通變量,所以我們也可以定義一個整型指針變量p,讓它指向數(shù)組b的第一個數(shù)組元素b[0][0]:int* p=&b[0][0];//或“int* p=b[0];”//或“int* p=*b;”。

        讀者可能會提出為何“int* p=*b;”是正確的呢?因?yàn)?b是對b這個指針常量取內(nèi)容的!所以*b的值就是b[0],而b[0]是指向其內(nèi)部的2個元素對象的第一個元素對象b[0][0]的!(切記不可以寫作:“int* p=b;”,因?yàn)閎是一個指針常量,它指向其第一個數(shù)組元素b[0]、并不是指向數(shù)組元素b[0][0]的!)。至此,我們也可以通過如下的main2函數(shù)清晰、直觀地觀察到數(shù)組b中元素在內(nèi)存中的存儲狀態(tài)。

        3 “數(shù)組指針”和一維、二維數(shù)組之間的關(guān)系

        以上兩部分介紹的都是普通指針變量指向一維、二維數(shù)組中具體的數(shù)組元素時發(fā)生的關(guān)系,下面我們有必要討論一種特殊的指針——“數(shù)組指針”,它和數(shù)組之間又會發(fā)生怎樣的“化學(xué)反應(yīng)”呢?(所謂數(shù)組指針就是專門用來指向數(shù)組的某行的指針!)

        以上函數(shù)代碼解釋如下:

        第1行的作用是:定義一個一維的整型數(shù)組a,并且對其6個數(shù)組元素進(jìn)行初始化!

        第2行的作用是:定義一個數(shù)組指針變量p,它是一個只能指向“包含有6個元素的一維數(shù)組”的指針變量!

        第3行的作用是:讓p去指向一維數(shù)組a的所有元素,即讓p去指向一行數(shù)據(jù)!

        第4行的作用是:打印出&a、a、&a[0]三個指針常量的值,可以發(fā)現(xiàn)它們是相同的!

        第5、6行的作用是:利用數(shù)組元素名打印出所有元素值!注意:C在編譯時會把a(bǔ)[i]轉(zhuǎn)換為*(a+i)處理!

        第8、9行的作用是:利用數(shù)組指針變量p打印出所有元素值!“(*p)[i]”的含義是:p所指向的行中序號為i的元素!

        第10行的作用是:讓p加1,p就一下子跳過了整個的一維數(shù)組中的所有元素!

        第11行的作用是:觀察p的值,發(fā)現(xiàn)p的值必定比&a[0]的值大0x18(即跳過了24個字節(jié)的單元格地址)!

        main4函數(shù)的倒數(shù)第3行代碼中的“*(p+i)+j”需要我們好好研究!“*(p+i)+j”指的是第i行第j列數(shù)組元素的地址?。ㄓ捎趐是指向行的數(shù)組指針變量,所以*(p+i)的作用就是“將第i行的行指針取星號降為指向b[i][0]的列指針”,“*(p+i)”再加上列控制變量j的值,即為元素b[i][j]所占內(nèi)存字節(jié)的首地址?。?/p>

        指針是C語言的特色及精華,其使用方法千變?nèi)f化,需要我們所有喜愛C語言的編程人員更加深入透徹的學(xué)習(xí)!

        參考文獻(xiàn):

        [1] 黑馬程序員[EB/OL].www.iqiyi.com.

        [2] C語言從菜鳥到高手[EB/OL].www.bilibili.com.

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

        [4] 明日科技.C語言從入門到精通[M].2版.北京:清華大學(xué)出版社,2011.

        [5] Stephen Prata. C Primer Plus[M].6版.北京:人民郵電出版社,2015.endprint

        猜你喜歡
        數(shù)組指針函數(shù)
        JAVA稀疏矩陣算法
        電腦報(2022年13期)2022-04-12 00:32:38
        二次函數(shù)
        第3講 “函數(shù)”復(fù)習(xí)精講
        二次函數(shù)
        函數(shù)備考精講
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        電腦報(2020年24期)2020-07-15 06:12:41
        偷指針的人
        娃娃畫報(2019年5期)2019-06-17 16:58:10
        為什么表的指針都按照順時針方向轉(zhuǎn)動
        尋找勾股數(shù)組的歷程
        基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識別
        電測與儀表(2015年5期)2015-04-09 11:30:42
        在线观看麻豆精品视频| 老头巨大挺进莹莹的体内免费视频| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 中文字幕人妻熟女人妻| 十八18禁国产精品www| 丰满人妻一区二区三区视频53| 大地资源在线观看官网第三页 | 97人人超碰国产精品最新o| 天堂网在线最新版www中文网| 亚洲国产一区二区三区网| 国产精品搭讪系列在线观看| 一区二区三区国产在线网站视频| 中字亚洲国产精品一区二区| 亚洲av粉色一区二区三区| 男人的天堂av你懂得| 免费在线观看视频播放| 亚洲av无码久久精品色欲| 999国内精品永久免费视频| 福利一区二区三区视频午夜观看| 亚洲国产精品久久久久久网站 | 亚洲一道一本快点视频| 久久久国产视频久久久| av一区二区三区综合网站| 一二三四区中文字幕在线| 欧洲美熟女乱av亚洲一区| 日本顶级metart裸体全部| 国产深夜男女无套内射| 日本丶国产丶欧美色综合| 亚洲AV无码国产精品久久l | 亚洲欧美中文字幕5发布| 亚洲av日韩av综合| 欧美精品aaa久久久影院| 美腿丝袜中文字幕在线观看| 91成人自拍在线观看| 国产精品多人p群无码| 国产裸体舞一区二区三区| 女人夜夜春高潮爽a∨片| 五十路熟女一区二区三区| 91热国内精品永久免费观看| 国产三级在线观看不卡| 91精品国产色综合久久|