国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 數(shù)組與指針專題

數(shù)組與指針專題 時(shí)間:2018-09-20      來源:未知

今天我們對數(shù)組與指針的知識(shí)做一個(gè)小結(jié)。包括數(shù)組、指針數(shù)組、數(shù)組指針。

一維數(shù)組與指針

在學(xué)習(xí)數(shù)組之前,必須對數(shù)組名字代表的含義非常的清楚,數(shù)組名代表的數(shù)組的首地址,通過這個(gè)首地址我們可以對這塊內(nèi)存區(qū)域進(jìn)行訪問,因?yàn)閿?shù)組分配空間是按照順序依次分配的。

&a 與 &a+1 之間相差了幾個(gè)元素呢?

在回答這個(gè)問題之前,我們需要明白幾個(gè)知識(shí)點(diǎn),我們說數(shù)組名a代表著數(shù)組的首地址,

a[i] 《==》*(a+i) 這個(gè)表達(dá)式是等價(jià)的,a+i 表示的是以內(nèi)存地址a移動(dòng)了i個(gè)int的地址。

我們同樣還看到了另外一個(gè)有趣的現(xiàn)象,a,&a[0][0],&a這三個(gè)元素打印的地址是相同的。

但是他們?nèi)齻(gè)的意義卻是有很大的不同。a代表數(shù)組的首地址,在其是一維數(shù)組時(shí),與&a[0][0]代表的意義一樣,首地址。&a代表的是把數(shù)組看成一個(gè)整體取地址&a + 1 則表示數(shù)組作為一個(gè)整體移動(dòng)了一個(gè)元素(數(shù)組),其實(shí)相當(dāng)于移動(dòng)了5*4 = 20個(gè)字節(jié)

&a+1 - &a = 0xbfd5f6b8 - 0xbfd5f6a4  (注:當(dāng)然不同類型的地址是不能相減的)

以下是利用數(shù)組名,指針變量來訪問數(shù)組元素。本地都是數(shù)組的首地址,想象一下首地址的意義。

運(yùn)行結(jié)果如下:

p[i] 表示的意義就是運(yùn)算式 *(p + i), 同樣的a[i] <==> *(a+i)

如果p = a時(shí), 那么這四個(gè)表達(dá)式的值都是相等的。

二、二維數(shù)組與指針

2.1 二維數(shù)組的各個(gè)地址的含義

在二維數(shù)組中,我們又有哪些需要注意的呢?數(shù)組名代表了數(shù)組的首地址,也代表了第一行的首地址。

執(zhí)行結(jié)果:

咱們通過上面的程序,可以知道的是a代表了數(shù)組的首地址,代表了第一行的首地址。記住了它這里與&a[0][0]值相等但是并沒有代表他的含義。我們可以把二維數(shù)組這么認(rèn)為,把每一行當(dāng)成一個(gè)整體作為一個(gè)元素,所以有咱們的a[0],a[1]正如我們初始化里面的一樣,把每行當(dāng)成一個(gè)數(shù)組用{}。

分析完上述,之后我們來開始接著往下分析,它和指針之間的碰撞,看看會(huì)發(fā)生哪些意想不到的化學(xué)反應(yīng)呢,記住地址是本質(zhì)。

2.2 指針數(shù)組

看到指針和數(shù)組的結(jié)合,不要畏懼,我們首先來分析它的字面的意思,指針數(shù)組注意定語是數(shù)組,也就是說數(shù)組時(shí)核心,那么我們想想數(shù)組的話就會(huì)有元素的,那么比較特殊,它的元素不是我們前面學(xué)的整形、字符型。而是指針類型。也就是說元素是一個(gè)一個(gè)的地址。

執(zhí)行結(jié)果:

以上三種方式情況都能訪問到我們的二維數(shù)組。那么我們來一一分析一下:

首先我們定義的指針數(shù)組,那么數(shù)組的元素只能是指針,同時(shí)我們上面進(jìn)行了分析,將二維數(shù)組的每行看成是一個(gè)一維數(shù)組,那么a[0],a[1]就是每行的首地址。那么我們初始化指針數(shù)組就順理成章了。此時(shí)數(shù)組a里面就有兩個(gè)元素a[0]和a[1]。

p[0] == a[0] p[1] == a[1] ,知道每行的首地址移動(dòng)j個(gè)元素,實(shí)際偏移的地址量sizeof(類型)* j個(gè)字節(jié)。那么知道了地址取出這個(gè)單元個(gè)的值,加*就ok了

我們知道帶有中括號(hào)的表達(dá)式可以這么寫p[i] == *(p + i)

2.3 數(shù)組指針

上面我們分析了指針數(shù)組,現(xiàn)在來分析數(shù)組指針。同樣我們來看定語是指針,那么作為指針就應(yīng)該有指向了,只不過它指向的是一個(gè)數(shù)組,一個(gè)什么樣的數(shù)組呢,它指向一個(gè)包含N個(gè)元素的一維數(shù)組。原型如:int(*p)[N];

執(zhí)行結(jié)果:

大家要注意的是類型的是為指針變量賦值的時(shí)候,類型要匹配

二維數(shù)組a代表著數(shù)組名,同時(shí)也是第一行的首地址,我們說把每個(gè)一維數(shù)組當(dāng)成一個(gè)整體,那么我們的二維數(shù)組就成了一個(gè)一維數(shù)組了,一維數(shù)組怎么取元素的呢?a[0],a[1]…a[i] 就是這個(gè)二維數(shù)組中每一個(gè)一維數(shù)組的值,但是切記它也只是一個(gè)地址

所以取整個(gè)數(shù)組的元素的值就有了上面的表述方式了。*(a[i] + j),*(*(a+i)+j), i表示行指針a,移動(dòng)的行數(shù),取出它的值是一行的首地址,在移動(dòng)j表示在此行的基礎(chǔ)上移動(dòng)的列數(shù),終得到的是這個(gè)數(shù)組第i行j列的地址了,取值的話就加上*就ok了。

咱們接著來深入分析,同樣的給p變量賦值,咱們來看看還有沒有別的方式呢,數(shù)組指針,本質(zhì)是一個(gè)指針,指向了一個(gè)數(shù)組,那么它里面存放的是一個(gè)地址。你可以把理解為一個(gè)二級(jí)指針。這樣也是可以的。

2.4 數(shù)組指針數(shù)組

按照咱們的上面來分析,定語是數(shù)組,那么數(shù)組就有元素,修飾語就是數(shù)組指針,那么我們可以這么認(rèn)為它的本質(zhì)是一個(gè)數(shù)組,數(shù)組包含了若干個(gè)元素,每個(gè)元素都是一個(gè)數(shù)組指針,也就是每一個(gè)元素是一個(gè)指針,指向了一個(gè)數(shù)組。好吧,比較拗口。依據(jù)咱們分析的意思咱們就可以寫出它的表達(dá)式了。

執(zhí)行結(jié)果如下:

結(jié)束語:

關(guān)于數(shù)組與指針的結(jié)合還有很多不同種的形式,方法就是找到咱們的后的定語,和前面的修飾語,一步一步的分析,分析時(shí)刻謹(jǐn)記地址是本質(zhì)是關(guān)鍵。

上一篇:二叉樹基本概念講解及創(chuàng)建

下一篇:Android GPS定位步驟

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部