亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

理解C語言二維數(shù)組的指針指向問題

2020-02-24 14:28:42
字體:
供稿:網(wǎng)友

以前,數(shù)組的概念還沒有完全理解,只是數(shù)組名是一個(gè)常量指針,基本指針的使用是類似的,所以當(dāng)我試圖訪問帶有輔助指針的二維數(shù)組時(shí),會(huì)經(jīng)常出錯(cuò),下面就讓武林技術(shù)頻道小編帶大家理解C語言二維數(shù)組的指針指向問題吧!

下面就是剛開始寫的一個(gè)錯(cuò)誤的程序:

#include <stdio.h>int main(){    int iArray[2][3] =    {{1,2,3},{4,5,6}};    int **pArray = NULL;    pArray = iArray;        printf("array[0][0] = %d/n", pArray[0][0]);    printf("array[1][2] = %d/n", pArray[1][2]);            return 0;}

開始的時(shí)候我是這樣分析的:本來數(shù)組和指針就差不多,一維數(shù)組和一維指針對應(yīng),那么二維數(shù)組名應(yīng)該和二維指針差不多,所以上面那個(gè)程序是沒有錯(cuò)的,應(yīng)該打印出的是1和6。但是當(dāng)我實(shí)際編譯運(yùn)行的時(shí)候,卻出現(xiàn)了段錯(cuò)誤,也就是我訪問了不該訪問的地址空間。那錯(cuò)誤到底出在什么地方呢?正確的程序應(yīng)該怎么寫呢?
???? 為了解決問題,不得不讓我重新理解數(shù)組的含義。仔細(xì)翻閱一些書籍后,我發(fā)現(xiàn)其實(shí)數(shù)組并不是我原來想象的那么簡單:一個(gè)常量指針標(biāo)識(shí)的一群變量的集合。數(shù)組應(yīng)該也算是一個(gè)完備的變量類型:有名字,有大小,也有地址。只不多就是名字和它的地址一樣罷了。也正是因?yàn)閿?shù)組有大小,所以當(dāng)用sizeof對數(shù)組名進(jìn)行運(yùn)算時(shí),算出來的是實(shí)際數(shù)組的大小,而不是指針的大小。
???? 也正是因?yàn)檫@樣,所以指向數(shù)組的指針和指向指針的指針也大不一樣。它們倆最明顯的不同就是表現(xiàn)在指針步進(jìn)的時(shí)候。我們知道指針在進(jìn)行++運(yùn)算的時(shí)候,跨越的實(shí)際地址取決于指針指向的數(shù)據(jù)類型:對于一般的32位機(jī)來說,假如指向的是int型數(shù)據(jù),跨越的實(shí)際地址就是4,指向的是指針型數(shù)據(jù),跨越的實(shí)際地址也是4,當(dāng)指向的是數(shù)組類型的時(shí)候,跨越的實(shí)際地址就是數(shù)組的長度了。
???? 現(xiàn)在再回頭分析上面那個(gè)錯(cuò)誤程序,根據(jù)下標(biāo)引用符號(hào)[]的運(yùn)算規(guī)則,我們知道pArray[0][0]其實(shí)就是**pArray,而iArray實(shí)際上只是個(gè)數(shù)組變量名,而它的值就是整個(gè)數(shù)組的開始地址(其實(shí)&iArray,iArray,iArray[0]以及&iArray的值都是數(shù)組的開始地址,都是在編譯過程中編譯器賦予的值)。那么其實(shí)*pArray就已經(jīng)是iArray[0][0]的值了,也就是1,而**pArray則是去訪問地址為1的地址空間中的數(shù)據(jù),自然會(huì)出段錯(cuò)誤。
???? 其實(shí)用指針訪問二維數(shù)組可以直接用一級(jí)指針就可以了。比如下面這個(gè)程序:

int main(){    int iArray[2][3] =    {{1,2,3},{4,5,6}};    int *pArray = NULL;    pArray = iArray;        printf("array[0][0] = %d/n", *pArray);    printf("array[1][2] = %d/n", *(pArray + 1 * 3 + 2));            return 0;}

?因?yàn)閿?shù)組本身在地址空間中就是連續(xù)排列的,根據(jù)行數(shù)和列數(shù),我們自己計(jì)算出訪問單元的地址偏移量就可以用一級(jí)指針輕松遍歷二維數(shù)組中的所有數(shù)據(jù)了。
我們還可以嘗試用指向數(shù)組的指針來訪問二維數(shù)組的成員。下面就是事例程序:

int main(){    int iArray[2][3] =    {{1,2,3},{4,5,6}};    int (*pArray)[3] = NULL;    pArray = iArray;        printf("array[0][0] = %d/n", pArray[0][0]);    printf("array[1][2] = %d/n", pArray[1][2]);            return 0;}

?簡單分析一下這個(gè)程序:我們知道[]運(yùn)算符的結(jié)合方向是由左向右,pArray[1][2]就等價(jià)于(* (pArray + 1))[2],而由于pArray是數(shù)組指針,而且數(shù)組的長度為3,所以* (pArray + 1)就表示iArray[1]這個(gè)數(shù)組,則pArray[1][2]則就完全等價(jià)于iArray[1][2]。
???? 如果非得想用二級(jí)指針來訪問二維數(shù)組的話,我們還得借用指針數(shù)組(數(shù)組內(nèi)存儲(chǔ)的都是指針類型的數(shù)據(jù)),下面是事例程序:

int main(){    int iArray[2][3] =    {{1,2,3},{4,5,6}};    int *ipArray[2] = {iArray[0], iArray[1]};    int **pArray = NULL;    pArray = ipArray;        printf("array[0][0] = %d/n", pArray[0][0]);    printf("array[1][2] = %d/n", pArray[1][2]);            return 0;}

?? 由于二級(jí)指針要跳兩次,所以中間還需要額外的存儲(chǔ)一級(jí)指針的空間。所以一般不建議用二級(jí)指針去訪問二維數(shù)組。

眾所周知,指針實(shí)質(zhì)就是地址!一個(gè)變量的地址即稱為此變量的“指針”。如果有這樣一種變量:它的存儲(chǔ)單元里存放的是其它變量的地址!我們就稱之為“指針變量”。(請注意兩者之間的區(qū)別:兩個(gè)完全不同的概念!)
我們都知道,數(shù)組名和函數(shù)名就是它們的入口地址。同理,一個(gè)變量名其實(shí)也是此變量的所在地址!C語言中有一種運(yùn)算符為“&”:取址運(yùn)算符。因?yàn)閿?shù)組名與函數(shù)名本身代表的就是地址,通常不會(huì)對并且也不能對它們進(jìn)行取址操作或其它運(yùn)算操作(其實(shí)對于函數(shù)名的直接引用與對它取址是等價(jià)的)。這也是它們被稱為“常量”的原因!但對于一個(gè)變量來講,情況就不一樣了。要想獲得它的地址,就必須進(jìn)行“&”運(yùn)算,盡管它本身表示的也是地址值!而對變量直接進(jìn)行引用得到卻是它所在的內(nèi)存單元的數(shù)據(jù)內(nèi)容!“指針變量”作為一種變量當(dāng)然也不能例外!只不過它與其它普通變量的差別是,它的內(nèi)容是其它變量(包括“指針變量”)的地址,在WIN32上,它的大小恒為32位,4BYTE。而普通變量則不會(huì)有大小上的限制!對指針變量所指向的地址的數(shù)據(jù)內(nèi)容的獲取則是通過操作符“*”。在理解上我們將“提領(lǐng)操作符*”視為類型的一部分,并且這種數(shù)據(jù)類型是一種變量地址類型(均對每一個(gè)“*”而言)!
只要明白了以上常識(shí),“指針”將不會(huì)再是程序設(shè)計(jì)中的“攔路虎”!
從內(nèi)存的存儲(chǔ)映象的角度來講,C的規(guī)則數(shù)組(不包括通過數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的多維數(shù)組)不存在多維,也就是說所有的數(shù)組本質(zhì)上都是一維的,而一級(jí)指針就等價(jià)于一維數(shù)組!關(guān)鍵的不同在于多維數(shù)組與一維數(shù)組語義上的差別!而我們理解多維數(shù)組通常將之形象地描述成“矩陣”形式。更為精確的理解是多維數(shù)組的每個(gè)元素就是一個(gè)數(shù)組,如此遞歸下去直至最后每個(gè)元素是一個(gè)簡單的變量類型,最終得到的就是一個(gè)特殊的一維數(shù)組!

以上就是關(guān)于理解C語言二維數(shù)組的指針指向問題,如果你還想了解更多別的C語言的信息,你可以來武林技術(shù)頻道咨詢,相信我們一定能為你提供最專業(yè)的服務(wù)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

狼狼综合久久久久综合网| 五月天av在线播放| 欧美gayvideo| 最新成人av在线| 国产成人高潮免费观看精品| 欧美视频在线观看免费网址| 久久国产综合| 欧美日韩伦理一区二区| 99影视tv| 337p日本欧洲亚洲大胆张筱雨| 国产精品激情av在线播放| 日韩三级免费观看| 亚洲天堂av免费在线观看| 91精品国产综合久久香蕉| 国产一区你懂的| 国内精品麻豆美女在线播放视频| 欧美24videosex性欧美| 国产视频xxxx| 热re66久久精品国产99热| 成人综合婷婷国产精品久久免费| 丁香啪啪综合成人亚洲小说| 你懂得在线网址| 日韩三级中文字幕| 日韩精品在线免费观看视频| 亚洲品质自拍| 俄罗斯精品一区二区三区| 在线xxxx| 国产亚洲精品精华液| 91精品国产综合久久香蕉的用户体验| 日韩黄色在线免费观看| 免费看国产曰批40分钟| 成人三级高清视频在线看| 国产精品精品视频一区二区三区| 秋霞影院一区二区| 亚洲字幕av一区二区三区四区| 免费高清成人在线| 中文字幕在线视频日韩| 国产第一页在线视频| 四虎影成人精品a片| 日本在线免费观看视频| 激情欧美一区二区| brazzers精品成人一区| 中文字幕一区二区在线观看视频| 国产一区二区丝袜高跟鞋图片| 亚洲a∨精品一区二区三区导航| 国内免费久久久久久久久久久| 美女黄网久久| 久久免费视频2| 性xxxx搡xxxxx搡欧美| 亚洲人和日本人hd| 日韩一级特黄毛片| 欧美亚洲视频在线观看| 亚洲视频在线观看免费| 欧美精品日韩一区| 精品成av人一区二区三区| 麻豆精品新av中文字幕| 国产一区亚洲二区| 日本欧美不卡| 国产精一区二区| 亚洲一区二区中文| 亚洲美女视频一区| 日本10禁啪啪无遮挡免费一区二区| 国内成人自拍| 国产黄色片中文字幕| 国产美女在线一区| 欧美久久精品一级黑人c片| 久久一本综合频道| 精品亚洲aⅴ乱码一区二区三区| 黄色片久久久久| 18禁免费无码无遮挡不卡网站| 午夜黄色福利视频| 亚洲高清三级视频| 99re免费99re在线视频手机版| 久久伦理网站| 亚洲av无码国产精品麻豆天美| 自拍偷拍欧美激情| 免费看黄资源大全高清| 国产一级大片| 国产日本视频| 日本超碰一区二区| 国产日韩在线一区二区三区| 亚洲成人精品一区二区| 亚洲天堂日韩在线| 136导航精品福利| 1769免费视频在线观看| 日韩精品免费观看| 天天色综合天天色| 青青青国产在线观看| 99久久久无码国产精品衣服| 国产亚洲精品久久久久久牛牛| 夜夜亚洲天天久久| 91成人在线视频观看| 亚洲欧洲综合| ww久久综合久中文字幕| 亚洲影视一区二区| 黄色激情网址| 亚州国产精品视频| 国产精品主播一区二区| 亚洲色图第四色| 97福利一区二区| 国产大尺度视频| 国产伊人精品在线| 丁香激情综合国产| 精品视频久久久久久| 欧美女人天堂| 成年人精品视频| 川上优av中文字幕一区二区| 日本韩国视频一区二区| 成人影视亚洲图片在线| 欧美视频免费播放| 中日韩一区二区三区| jiujiure精品视频播放| 国模雨婷捆绑高清在线| 日韩福利视频网| 日本高清不卡在线| 欧美区日韩区| 国产午夜亚洲精品午夜鲁丝片| 久久手机视频| 韩日午夜在线资源一区二区| 产国精品偷在线| 天堂一区二区在线| 久久久亚洲福利精品午夜| 久久r热视频| 大荫蒂欧美视频另类xxxx| 在线看成人av| 91精品国产自产在线老师啪| 国产熟女高潮视频| 人人狠狠综合久久亚洲婷| 亚洲色欲综合一区二区三区| 精品麻豆剧传媒av国产九九九| 亚洲欧美日韩在线一区| 黄色av免费在线播放| 欧美 日韩精品| 视频一区 中文字幕| 欧美视频在线播放一区| 成人春色在线观看免费网站| 日批视频在线看| 伊人精品视频| 成人性教育视频在线观看| 丝袜美女在线观看| 亚洲国产成人久久综合| 国产精品偷拍| 免费观看国产视频在线| 性一交一乱一伦一色一情| 77777亚洲午夜久久多人| 亚洲伦乱视频| 欧美激情视频在线免费观看 欧美视频免费一| 美女视频一区二区| 欧美黄色视屏| 亚洲美女少妇撒尿| 亚洲码国产岛国毛片在线| 免费在线观看毛片网站| 欧洲成人性视频| 久久久国产在线视频| 国产又粗又大又爽| 伊人免费在线观看高清版| 人妻少妇精品一区二区三区| 亚洲人成精品久久久久| 黄色av网站免费观看| 久久综合国产精品台湾中文娱乐网| 国产成人精品无码高潮| 日韩免费电影网站| 国产精欧美一区二区三区蓝颜男同| 国产女人18毛片水真多18| 奇米视频888| 成人在线中文| 成人观看高清在线观看免费| 久久爱91午夜羞羞| 国产原创精品| 中文字幕制服诱惑| 久久国产88| 久久久影院一区二区三区| 亚洲精选av在线| 免费一级欧美在线观看视频| 免费一级特黄3大片视频| 日本女人性生活视频| 久久久久久久极品| 国产精品免费91| 人妻va精品va欧美va| 翔田千里亚洲一二三区| 免费黄色网网址| 灌醉mj刚成年的大学平面模特| 国产嫩草一区二区三区在线观看| 成人免费视频网站入口| 日韩网站在线观看| 男人天堂2020| xxxx.国产| 欧美人成网站| 免费久久一级欧美特大黄| 91免费看片在线| 青草草在线视频| 国产jzjzjz丝袜老师水多| 亚洲欧美日韩一区二区| 91成人国产在线观看| 成人在线观看黄色| 中文在线观看免费网站| 国产精品视频在线看| 久久久久欧美精品| 天天操天天操一操| 伊人久久大香线蕉av超碰演员| 久热精品视频在线观看一区| 国产精品视频免费观看| av先锋影院| 国产偷国产偷精品高清尤物| 免费在线观看黄网站| 北条麻妃亚洲一区| 永久久久久久| 污网站在线观看免费| 国产精品丝袜久久久久久高清| 日韩午夜av一区| 蜜桃av噜噜一区二区三区| 精品人伦一区二区三区蜜桃免费| 日韩欧美一二三区| 日韩中文字幕观看| 日韩欧美精品免费在线| 奇门遁甲1982国语版免费观看高清| 黄色网页在线免费看| 国产性猛交╳xxx乱大交| 亚洲精品在线观| 中文字幕免费在线观看视频一区| 女人被狂躁到高潮视频免费网站| 中文日韩欧美| 扒开jk护士狂揉免费| 欧美激情视频在线免费观看 欧美视频免费一| 在线看国产精品| 免费看成人哺乳视频网站| 欧美成人日韩| 五月综合激情日本mⅴ| 97国产成人无码精品久久久| 久久丝袜美腿综合| 国产精品扒开腿做爽爽| 奇米4444一区二区三区| 97国产suv精品一区二区62| 网站黄在线观看| 欧美精品在线视频| 日韩精品免费一区二区在线观看| 成人午夜在线影视| 女同互忝互慰dv毛片观看| 天堂а√在线中文在线鲁大师| 性xxxx奶大欧美高清| 亚洲午夜精品久久久久久app| 91看片免费| 伊人久久久大香线蕉综合直播| 日日摸日日碰夜夜爽无码| 日本在线视频中文字幕| www.色五月.com| 在线麻豆国产传媒1国产免费| 国产午夜精品理论片| 91麻豆精品国产自产在线| av在线不卡电影| 国产精品成人69xxx免费视频| 五月婷婷六月丁香| 中文字幕一区二区三区免费看| 91九色蝌蚪91por成人| 中文字幕一区二| 五月婷婷视频在线| 日本午夜一本久久久综合| 99久久精品国产亚洲精品| 久久久噜噜噜久久中文字免| 欧美91精品久久久久国产性生爱| 日本在线观看高清完整版| 国产夜色精品一区二区av| 青青青国产在线视频| 久草手机在线视频| 欧美三级在线免费观看| 日本人视频jizz页码69| 国产原创一区二区三区| 亚洲日本va中文字幕| 国产精品草莓在线免费观看| 亚洲三级 欧美三级| xxxx 国产| 成人免费在线小视频| 亚洲人成77777在线观看网| 日韩黄色在线观看| 青青青青久久精品国产一百度| free极度另类性欧美| 久久久成人av| 久cao在线| 国产精品久久久免费看| 偷拍25位美女撒尿视频在线观看| 免费在线中文字幕| 国产日韩欧美精品一区二区三区| 色偷偷综合社区| 一区二区三区高清不卡| 亚洲国产精品久久不卡毛片| 美女被到爽高潮视频| 欧洲乱码伦视频免费| 国产一区不卡在线观看| 亚洲欧洲日韩综合二区| 精品国产乱码久久久久夜深人妻| 天堂中文字幕一二区| 蜜芽在线视频| 成人午夜视频免费看| 漂亮人妻被黑人久久精品| 青草网在线观看| 手机看片一区二区| 亚洲综合在线播放| 亚洲综合日韩| 2020国产精品极品色在线观看| 天天夜碰日日摸日日澡| 成年人在线观看视频| 国产精品66| 欧美日韩dvd在线观看| 999国产精品一区| 热久久这里只有精品| 九色porny视频国产网曝| 99在线精品免费视频| 激情综合网天天干| 国产精品亚洲产品| 天天干天天操天天玩| 国产精品婷婷午夜在线观看| 国产精品久久午夜| 国产原创在线播放| 亚洲福利久久| 51调教丨国产调教视频| 亚洲午夜色婷婷在线| 99久久久久久久久| 欧美成人精品一区二区男人小说| 大肉大捧一进一出好爽| 亚洲不卡中文字幕| www国产精品com| 国产精品爽黄69天堂a| 欧美中日韩在线| 黄黄视频在线观看| a毛片在线免费观看| 宅男噜噜噜66国产日韩在线观看| av超碰在线观看| 日韩av电影在线免费播放|