成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

二維數(shù)組和它的指針-創(chuàng)新互聯(lián)

這片文章介紹二維數(shù)組int a[ i ] [ j ]中的符號:a,&a[ i ],&a[ i ][ j ],a[ i ][ j ],&a[ i ] [ j ]的含義,重點(diǎn)在后面第二部分的分析,但是前面第一部分的復(fù)習(xí)數(shù)組指針,指針數(shù)組和二維指針是前提,前面的不會,后面的沒法理解。這片文章寫的有些費(fèi)勁,個人能力不夠,可能會有錯誤,希望各位朋友能夠指正,共同進(jìn)步。//握手

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、小店ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的小店網(wǎng)站制作公司

一:先回顧一下數(shù)組指針,指針數(shù)組,二維指針

先根據(jù)逐層分析分方法分析下面的代碼
(1)int (*p)[5];
(2)int *p[5];
(3)int **p;

看到上面的定義方式一一分析
分析(1)
第一步:找核心,核心是p
第二步:由p向外一層分析,p和*結(jié)合是指針,再和[]結(jié)合,所以int (*p)[5] 是數(shù)組指針

分析(2)
第一步:找核心,核心是p
第二步:由核心p向外一層分析,p先和[]結(jié)合是數(shù)組,數(shù)組中元素是*類型,所以int *p[5];是指針數(shù)組。

分析(3)
第一步:找核心,核心是p
第二步:由p向外一層分析,p先和結(jié)合是指針,然后*p再和結(jié)合是指針的指針,即二重指針。

(4)二重指針和指針數(shù)組
二重指針就是指針數(shù)組指針(有點(diǎn)亂哈)

先看指針數(shù)組 int *p[5];
(1)p是一個數(shù)組,數(shù)組有5個元素,每個元素都是int*類型
(2)指向int * 類型的指針不就是int**嘛
(3)得出結(jié)論,二重指針就是指針數(shù)組指針。

二:二維數(shù)組和指針的糾纏

先定義一個二維數(shù)組 int a[ i ] [ j ];
a是二維數(shù)組數(shù)組名,把二維數(shù)組看成一個平面。i表示有i行,j表示每行有j列。有一個一維數(shù)組int a[ 10 ],寫成二維數(shù)組就是int a[ 2 ] [ 5 ],把10個元素分成2組,每組有5個元素。i表示第一維表示有多少組,j表示每組有多少元素。

符號含義 int a[ 2 ][ 5 ];int a[ i ] [ j ];

跟著思路一步一步走

第一維表示有2個一維數(shù)組分別是 a[ 0 ]和a[ 1 ](也就是a[ i ]和a[i+1])
第二維表示在這兩個數(shù)組中分別有5個元素。

那么第一個問題來了

兩個數(shù)組的數(shù)組名是誰?

對,a[ i ]和a[i+1] 既然a[ i ]和a[ i+1 ] 是一維數(shù)組名

那么第二個問題來了?

a[ i ]和a[ i+1 ]類型是什么?

一維數(shù)組數(shù)組名做右值表示數(shù)組首元素的首地址,首元素是int,首元素的地址是int * ,&b做右值表示整個數(shù)組的首地址,類型是int(*)[]
int b[10];
int *p;
p = b;

所以 a[i]這個數(shù)組名做右值表示數(shù)組首元素的首地址,首元素是一個數(shù)組,首元素的地址,數(shù)組的首地址是int * ,&a[i]表示整個數(shù)組的首地址(這個整個數(shù)組時指包含兩個數(shù)組的那個數(shù)組)

??!這里很重要:
迷惑1:a[i]做右值不是表示數(shù)組首元素的首地址嗎?首元素是一個數(shù)組,那么其類型應(yīng)該是數(shù)組的指針啊,類型是int( * ) [ ];

解答:a[i]這個數(shù)組名做右值確實(shí)表示數(shù)組首元素的首地址,比如int b[10];數(shù)組名b做右值表數(shù)組首元素的首地址,也就是相當(dāng)于&b[0],那再二維數(shù)組中,a[ i ]和a[i+1]分別是兩個數(shù)組,每個數(shù)組有5個int元素,這么一想就是了:a[ 0 ]這個數(shù)組名做右值時等價于&a[0][0],第1個數(shù)組的
第1個元素,第一個元素是int類型,所以a[ i ]是int* 類型的指針。&a[ i ]表示整個數(shù)組(包含i個數(shù)組的大數(shù)組)的首地址,也就是看的是a[ i ]和a[ i+1 ]這兩個數(shù)組的首地址,所以&a[ i ]的類型才是數(shù)組指針,int( * ) [ ];二維數(shù)組名a和&a[ i ]類型一致。

二維數(shù)組的運(yùn)算
int b[ 10 ];
下標(biāo)訪問b[ 1 ]
指針訪問* ( b+1)

int a[ 2 ] [ 10 ]
下標(biāo)訪問a[ 1 ] [ 1 ]
指針訪問* ( * (a+1)+1)

分析:a是二維數(shù)組的數(shù)組名,在這肯定做右值,a做右值等價于&a[0]也就是第一個數(shù)組的首地址,(總共有兩個數(shù)組),類型是int(*)[];這時候當(dāng)a+1時,a指向誰?a是數(shù)組指針,a肯定指向數(shù)組,這時候a+1,偏移量為a[i]這個數(shù)組的大小,指向了a[1]這個小數(shù)組。每個小數(shù)組有5個元素,大小是一個int。這時候j的偏移量就是一個int的大小。

總結(jié):
(1)int a[ i ][ j ];二維數(shù)組表示有i個小數(shù)組,沒個小數(shù)組有j個元素。
(2)a[ 0 ]做右值表示& a[ 0] [ 0 ]
&a[ 0 ]做右值和二維數(shù)組名a做右值含義一樣。
(3)a[ i ][ j ]表示每一個元素,每一個元素都是int類型的。
&a[ i ] [ j ]表示int* 類型的指針。
(4)a[ i ] [ j ] 等價于 * (* (a+i)+j)

二維數(shù)組比較難理解,難道真的是只可意會不可言傳?雖然寫了這篇文章,但總感覺不是很對,以我目前的水平無法找出錯誤,請高手指點(diǎn)。//感謝

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前名稱:二維數(shù)組和它的指針-創(chuàng)新互聯(lián)
分享路徑:http://jinyejixie.com/article48/disjep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、軟件開發(fā)網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化、網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
庄河市| 象州县| 西青区| 咸宁市| 崇明县| 临漳县| 海原县| 延吉市| 宜昌市| 莱西市| 黔南| 丰台区| 富平县| 福建省| 桦甸市| 巴楚县| 句容市| 当雄县| 公主岭市| 无为县| 旬邑县| 赣榆县| 大邑县| 张北县| 沂水县| 江北区| 乐都县| 玉屏| 丰宁| 阳泉市| 大城县| 土默特左旗| 巨野县| 离岛区| 雅江县| 仁寿县| 肇庆市| 鹤峰县| 扬中市| 元谋县| 沂源县|