久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 數組與指針專題(ti)

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

今天我們對數(shu)組與指針(zhen)的知識(shi)做一個小結(jie)。包括數(shu)組、指針(zhen)數(shu)組、數(shu)組指針(zhen)。

一維(wei)數組與指針

在學習數(shu)組(zu)之前,必須對數(shu)組(zu)名字代表的(de)含義非常的(de)清(qing)楚,數(shu)組(zu)名代表的(de)數(shu)組(zu)的(de)首地(di)址,通過這個首地(di)址我們可(ke)以(yi)對這塊內存區域(yu)進行訪問,因(yin)為數(shu)組(zu)分配(pei)空間是按照順序(xu)依次分配(pei)的(de)。

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

在回答這個問題(ti)之前(qian),我們需要明白(bai)幾個知識點,我們說數組名a代(dai)表(biao)著數組的首地址,

a[i] 《==》*(a+i) 這個表達式是等價的,a+i 表示的是以內存地址a移動了i個int的地址(zhi)。

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

但是(shi)他們三個的(de)(de)(de)意(yi)義卻是(shi)有很大的(de)(de)(de)不同。a代(dai)表(biao)(biao)數組的(de)(de)(de)首地(di)址,在其是(shi)一維數組時,與&a[0][0]代(dai)表(biao)(biao)的(de)(de)(de)意(yi)義一樣,首地(di)址。&a代(dai)表(biao)(biao)的(de)(de)(de)是(shi)把(ba)數組看成一個整體取地(di)址&a + 1 則表(biao)(biao)示(shi)數組作為一個整體移動了(le)一個元素(數組),其實相(xiang)當于移動了(le)5*4 = 20個字節

&a+1 - &a = 0xbfd5f6b8 - 0xbfd5f6a4  (注(zhu):當然不同類(lei)型的(de)地(di)址是不能相減的(de))

以(yi)下是利用數(shu)(shu)組(zu)名(ming),指針變量來訪問數(shu)(shu)組(zu)元素(su)。本地(di)(di)都是數(shu)(shu)組(zu)的首(shou)地(di)(di)址,想象一(yi)下首(shou)地(di)(di)址的意義。

運行結(jie)果(guo)如下(xia):

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

如(ru)果p = a時, 那(nei)么這四(si)個表達(da)式(shi)的(de)值都是相等的(de)。

二、二維數組(zu)與指針

2.1 二(er)維數組(zu)的各(ge)個地址的含義(yi)

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

執行結果:

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

分析(xi)完上述,之后(hou)我們(men)來開始接著往下(xia)分析(xi),它和(he)指(zhi)針之間的碰撞,看看會發生哪些意想不到的化學反應呢,記住地(di)址是本質(zhi)。

2.2 指(zhi)針數(shu)組

看到指針和數組的結合,不要畏懼,我們首先來分析它的字面的意思,指針數組注意定語是數組,也就是說數組時核心,那么我們想想數組的話就會有元素的,那么比(bi)較特殊,它的(de)元素不(bu)是我(wo)們前(qian)面(mian)學的(de)整形、字符型。而是指針類型。也就是(shi)說元素是(shi)一個(ge)一個(ge)的(de)地址。

執行結果:

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

首先我們(men)定(ding)義的(de)指(zhi)針(zhen)數(shu)組(zu)(zu),那么(me)(me)數(shu)組(zu)(zu)的(de)元(yuan)素(su)只(zhi)能(neng)是(shi)(shi)指(zhi)針(zhen),同(tong)時(shi)我們(men)上面進(jin)行(xing)了分析(xi),將二維數(shu)組(zu)(zu)的(de)每行(xing)看成(cheng)是(shi)(shi)一個(ge)一維數(shu)組(zu)(zu),那么(me)(me)a[0],a[1]就(jiu)是(shi)(shi)每行(xing)的(de)首地址(zhi)。那么(me)(me)我們(men)初始化指(zhi)針(zhen)數(shu)組(zu)(zu)就(jiu)順理(li)成(cheng)章了。此時(shi)數(shu)組(zu)(zu)a里面就(jiu)有兩個(ge)元(yuan)素(su)a[0]和a[1]。

p[0] == a[0] p[1] == a[1] ,知道每(mei)行的(de)(de)首地(di)址移(yi)動j個元素,實際(ji)偏移(yi)的(de)(de)地(di)址量(liang)sizeof(類型)* j個字節。那么知道了地(di)址取出這(zhe)個單(dan)元個的(de)(de)值,加(jia)*就ok了

我們知道帶(dai)有中(zhong)括(kuo)號的(de)表達式(shi)可以這么寫p[i] == *(p + i)

2.3 數組指針

上面我們(men)分析(xi)了指針(zhen)數組(zu),現在來(lai)分析(xi)數組(zu)指針(zhen)。同樣(yang)我們(men)來(lai)看定(ding)語是指針(zhen),那么作(zuo)為(wei)指針(zhen)就(jiu)應該有指向(xiang)了,只不過它指向(xiang)的是一(yi)(yi)個(ge)(ge)數組(zu),一(yi)(yi)個(ge)(ge)什(shen)么樣(yang)的數組(zu)呢,它指向(xiang)一(yi)(yi)個(ge)(ge)包含N個(ge)(ge)元素的一(yi)(yi)維數組(zu)。原(yuan)型如(ru):int(*p)[N];

執行結果:

大家(jia)要注意的(de)是類型的(de)是為指針(zhen)變量賦值的(de)時(shi)候,類型要匹配

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

所以取(qu)(qu)整個數組的(de)(de)元素的(de)(de)值(zhi)就(jiu)有了(le)上(shang)面的(de)(de)表述方式(shi)了(le)。*(a[i] + j),*(*(a+i)+j), i表示行(xing)(xing)指針a,移動的(de)(de)行(xing)(xing)數,取(qu)(qu)出它的(de)(de)值(zhi)是一行(xing)(xing)的(de)(de)首地(di)址,在移動j表示在此行(xing)(xing)的(de)(de)基礎上(shang)移動的(de)(de)列數,終(zhong)得到的(de)(de)是這個數組第i行(xing)(xing)j列的(de)(de)地(di)址了(le),取(qu)(qu)值(zhi)的(de)(de)話就(jiu)加上(shang)*就(jiu)ok了(le)。

咱們接著來(lai)深入分析,同(tong)樣(yang)的(de)(de)給p變量(liang)賦值,咱們來(lai)看看還有沒有別的(de)(de)方(fang)式呢,數組指(zhi)(zhi)針(zhen),本質是(shi)一個(ge)(ge)指(zhi)(zhi)針(zhen),指(zhi)(zhi)向(xiang)了一個(ge)(ge)數組,那么它里面存放的(de)(de)是(shi)一個(ge)(ge)地址。你可(ke)以(yi)把理解為(wei)一個(ge)(ge)二級指(zhi)(zhi)針(zhen)。這(zhe)樣(yang)也是(shi)可(ke)以(yi)的(de)(de)。

2.4 數組指針數組

按照咱們的(de)上面來(lai)分(fen)析,定語是(shi)(shi)數(shu)組,那(nei)么(me)(me)數(shu)組就(jiu)有元(yuan)素(su),修飾語就(jiu)是(shi)(shi)數(shu)組指(zhi)針,那(nei)么(me)(me)我們可以(yi)這么(me)(me)認為它的(de)本質(zhi)是(shi)(shi)一(yi)(yi)個數(shu)組,數(shu)組包含(han)了(le)若干個元(yuan)素(su),每個元(yuan)素(su)都(dou)是(shi)(shi)一(yi)(yi)個數(shu)組指(zhi)針,也就(jiu)是(shi)(shi)每一(yi)(yi)個元(yuan)素(su)是(shi)(shi)一(yi)(yi)個指(zhi)針,指(zhi)向(xiang)了(le)一(yi)(yi)個數(shu)組。好吧,比較拗口。依據咱們分(fen)析的(de)意(yi)思(si)咱們就(jiu)可以(yi)寫(xie)出它的(de)表達(da)式了(le)。

執行結果如下:

結束語:

關(guan)于數組與指(zhi)針的(de)(de)(de)結合還有很多不同種的(de)(de)(de)形(xing)式,方法就(jiu)是找(zhao)到咱們(men)的(de)(de)(de)后(hou)的(de)(de)(de)定語,和前面的(de)(de)(de)修飾語,一(yi)步一(yi)步的(de)(de)(de)分析,分析時刻謹記地址(zhi)是本質是關(guan)鍵(jian)。

上一篇:二叉樹基本概念講解及創建

下一篇:Android GPS定位步驟

熱點(dian)文(wen)章(zhang)推(tui)薦
華清(qing)學員就業榜單
高薪學員經驗分享
熱點新聞推薦(jian)
前(qian)臺專線:010-82525158 企(qi)業(ye)培(pei)訓洽談專線:010-82525379 院校合作洽談(tan)專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部