小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C語言學習篇(17)-----“指針數組”與“數組指針”

 拾叁億人 2022-05-21 發(fā)布于云南

之前我們說過指針和數組天生是聯系在一起的,因此兩者結合應用在實際工程項目代碼中也用的比較廣泛,同時在很多面試中,面試官也喜歡問“指針數組”和“數組指針”兩者的區(qū)別和應用。因此今天我們就來講講這兩者的區(qū)別和用法。

文章圖片1

指針數組和數組指針

本質區(qū)別

指針數組:實質是一個數組,指針是修飾詞,表明這個數組中存儲的內容全部是指針變量

數組指針:實質是一個指針,數組是修飾詞,表名這個指針指向的是一個數組

我們從以下幾個常見的表達式來分析:

int *p[5];int (*p)[5];int *(p[5]);

表達式分析

首先為了分析上面3個表達式, 我們需要說明表達式中出現的運算符(* 和 [])的優(yōu)先級。

文章圖片2

C語言運算符優(yōu)先級

從上面的圖中,我們可以看出優(yōu)先級:[] > *

OK, 接下來我們開始分析:

  • int *p[5]

因為[]的優(yōu)先級比*高,因此變量p先于[5]結合,故p是數組, 而int *就是修飾詞,總體就是p是一個數組,數組有5個元素,數組中的元素都是指針,指針指向的元素類型是int類型的;整個符號是一個指針數組。

  • int (*p)[5]

因為()的原因,p與*先結合,因此p是一個指針,然后再與[5]結合,此時的[5]并成了修飾詞;總體就是p是一個指針,指針指向一個數組,數組有5個元素,數組中存的元素是int類型; 整個符號是一個數組指針。

  • int *(p[5])

[]的優(yōu)先級本來就比*,再加上符號()的作用,p肯定先與[5]結合了,因此p是一個數組, int *是修飾詞,總體就是p是一個數組,數組有5個元素,數組中的元素都是指針,指針指向的元素類型是int類型的;這與第一種情況一致(其中運算符()可有可無),整個符號是一個指針數組。

總結

首先要知道一般規(guī)律:int *p;(p是一個指針); int p[5];(p是一個數組)

然后判斷核心(變量名p)與誰先結合,如果核心和*結合,表示核心是指針;如果核心和[]結合,表示核心是數組(找結合);之后再向外擴展(找修飾詞)。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多