最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

不規(guī)則二維數(shù)組(二級(jí)指針)

2023-02-26 21:45 作者:影之歌_1122  | 我要投稿

這是《數(shù)據(jù)結(jié)構(gòu)、算法與應(yīng)用 C++語言描述》一書中關(guān)于不規(guī)則二維數(shù)組的示例代碼,我在原來的基礎(chǔ)上進(jìn)行了一些修改,以便說說自己對二級(jí)指針的理解。

書中的原本的代碼僅示例了數(shù)組下標(biāo)操作二維數(shù)組的方式,沒有對二級(jí)指針進(jìn)行討論,同時(shí)也沒有對內(nèi)存進(jìn)行釋放。當(dāng)然,原書的本意也只是對不規(guī)則二維數(shù)組進(jìn)行演示演示而已。

這里以二級(jí)指針的形式,聲明了一個(gè)二維數(shù)組。二級(jí)指針既是:指向指針的指針;二維數(shù)組既是:一維數(shù)組AA中的每個(gè)元素都存儲(chǔ)一個(gè)一維數(shù)組。這兩個(gè)解釋,看起來都像在套娃。那為什么不規(guī)則二維數(shù)組要以二級(jí)指針的形式進(jìn)行聲明呢?

在C++中,我們可以聲明一個(gè)指針,該指針指向一個(gè)一維數(shù)組。假設(shè)有pp,p1,p2,p3四個(gè)指針,pp指針指向長度是3的一維數(shù)組AA,AA存儲(chǔ)了p1,p2,p3。p1指向一維數(shù)組A1,p2指向一維數(shù)組A2,p3指向一維數(shù)組A3。也就是說,實(shí)際上AA不存儲(chǔ)A1,A2,A3,只是存儲(chǔ)了指向A1,A2,A3的指針。

因此,“一維數(shù)組AA中的每個(gè)元素都存儲(chǔ)一個(gè)一維數(shù)組(A1、A2、A3)”只是表現(xiàn),實(shí)際實(shí)現(xiàn)則是“指向指針(p1、p2、p3)的指針(pp)”。因此使用二級(jí)指針來申明不規(guī)則二維數(shù)組。

把這幾行代碼放一起看看:一維數(shù)組AA(new int* [numberOfRows])里的每個(gè)元素都是一個(gè)一維數(shù)組(new int[length[i]])。但要注意到的是AA是int* [ ]類型的,AA里只能放了int * 型的指針。因此要理解irregularArray是指向指針的指針,而不是存著數(shù)組的數(shù)組。它只是最終表現(xiàn)成存著數(shù)組的數(shù)組,而不是真的存著數(shù)組的數(shù)組。這個(gè)確實(shí)是有點(diǎn)繞。

這段就可以很明顯的看出,irregularArray里存的是地址(指針),而這些地址(指針),每個(gè)都指向一個(gè)一維數(shù)組。以下的代碼,這是對這些被最終指向的一維數(shù)組,進(jìn)行操作。

在 i 和 j 的嵌套循環(huán)中有這種關(guān)系:

1、irregularArray[?i?][?j?]?和?*(?*(?irregularArray?+ i?)?+ j?)?是相同意義的。

2、&?irregularArray[?i?][?j?] 和?*(?irregularArray?+ i?)?+ j 是相同意義的。

3、&?irregularArray[?i?]?和?irregularArray?+?i?是相同意義的。

4、?irregularArray即可作為數(shù)組名,又可以作為指針。

當(dāng)irregularArray作為指針時(shí),它指向一維數(shù)組 (設(shè)該數(shù)組為AA) 的首地址,則 irregularArray + i???就是AA的第 i 個(gè)元素的地址(上面第3點(diǎn)),而?*(?irregularArray?+ i?) 就是AA的第 i 個(gè)元素所保存的地址,這個(gè)地址就是另一個(gè)一維數(shù)組(設(shè)該數(shù)組為Ai)的首地址,因此 *(?irregularArray?+ i?)?+ j 就是Ai的第j個(gè)元素的地址(上面第2點(diǎn)),因此 *(?*(?irregularArray?+ i?)?+ j?) 就是Ai的第j個(gè)元素所保存的數(shù)據(jù)(上面第1點(diǎn))。

由于?*(?irregularArray?+?i?)?就是AA的 第i?個(gè)元素所保存的地址,這個(gè)地址就是另一個(gè)一維數(shù)組(設(shè)該數(shù)組為Ai)的首地址。因此delete?[?]?*(?irregularArray?+?i?)就是釋放了最終被指向的所有一維數(shù)組的內(nèi)存空間,最后在delete [?] irregularArray,釋放了存儲(chǔ)這些一維數(shù)組的指針的空間。

程序結(jié)束。


不規(guī)則二維數(shù)組(二級(jí)指針)的評(píng)論 (共 條)

分享到微博請遵守國家法律
商洛市| 哈尔滨市| 莆田市| 中西区| 南昌县| 神木县| 大渡口区| 海门市| 富锦市| 文山县| 南阳市| 三明市| 榆中县| 泰宁县| 普安县| 乌兰县| 囊谦县| 琼海市| 盐津县| 防城港市| 瑞金市| 嘉黎县| 高唐县| 景泰县| 阳信县| 韩城市| 宁安市| 海安县| 牡丹江市| 翼城县| 古交市| 奉节县| 河源市| 正阳县| 修武县| 冷水江市| 容城县| 酉阳| 洛隆县| 定安县| 石渠县|