指針

1、什么是指針氓侧?

通俗來講——指針就是變量脊另,用來儲(chǔ)存地址的變量。

2约巷、指針數(shù)組 & 數(shù)組指針

指針數(shù)組:它是一個(gè)數(shù)組偎痛,數(shù)組里面每個(gè)元素都是指針,數(shù)組的大小由它元素的個(gè)數(shù)決定独郎。?

數(shù)組指針:它是一個(gè)指針踩麦,它指向一個(gè)數(shù)組,指針的大小永遠(yuǎn)都是4字節(jié) 氓癌。

(1)int *p1[10]?

p1是指針數(shù)組谓谦,里面有10個(gè)元素,每個(gè)元素都是地址贪婉;

(2)int (*p2)[10]?

p2是數(shù)組指針反粥,這個(gè)指針指向一個(gè)有10個(gè)整型元素的數(shù)組。

兩者區(qū)分:

①我們要知道“[ ]”的優(yōu)先級(jí)比“ * ”的優(yōu)先級(jí)高疲迂,p1先與“[ ]”先集合才顿,這就構(gòu)成了數(shù)組的結(jié)構(gòu),數(shù)組名是p1尤蒿,里面存的元素的類型是 int *

②p2先和“ * ”結(jié)合郑气,構(gòu)成指針結(jié)構(gòu),指針名為p2腰池,int和[10]共同表示指針的類型竣贪,p2指向的是具有10個(gè)整型元素的數(shù)組军洼。

3、a和&a的區(qū)別

int main()

{

? ? char a[5] = { 'a', 'b', 'c', 'd', 'e' };

? ? char(*p1)[5] = &a;

? ? char(*p2)[5] = a;

? ? return 0;

}

p1和p2哪個(gè)是數(shù)組指針演怎?

此處p1和p2都是數(shù)組指針匕争,但最好采用p1這種寫法。?因?yàn)閍是代表數(shù)組首元素的地址爷耀,而&a才是代表整個(gè)數(shù)組的地址甘桑,兩者的值是一樣的,但所代表的意義是完全不同的歹叮。

4跑杭、地址強(qiáng)轉(zhuǎn)

下面代碼輸出結(jié)果是多少?

int main()

{

? ? int a[4] = { 1, 2, 3, 4 };

? ? int *p1 = (int *)(&a + 1);

? ? int *p2 = (int *)((int)a + 1);

? ? printf("%x, %x", p1[-1], *p2);

? ? return 0;

}

p1:把 &a+1的值強(qiáng)制轉(zhuǎn)換成 int * 再賦值給p1咆耿,此時(shí)p1指向數(shù)組a尾元素的下一個(gè)int型元素德谅。p1[-1]可以理解成 *(p1 - 1)。表示p1往前移動(dòng)sizeof(int)個(gè)字節(jié)萨螺,所以輸出0x4窄做。

p2:(int)a + 1表示把a(bǔ)強(qiáng)轉(zhuǎn)成整型數(shù)據(jù),再加1則(int)a + 1就是元素a[0]的第二個(gè)字節(jié)的地址慰技,然后再把這個(gè)地址強(qiáng)轉(zhuǎn)為int * 類型賦值給p2椭盏,那*p2的值就是從元素a[0]的第二個(gè)字節(jié)開始的連續(xù)4字節(jié)的內(nèi)容。

那么這連續(xù)4個(gè)字節(jié)內(nèi)容是什么呢吻商?這里就要區(qū)分大小端了掏颊,小端模式返回0x2000000;大端模式返回0x100艾帐。

注:

所謂的大端模式乌叶,就是高位字節(jié)排放在內(nèi)存的低地址端,低位字節(jié)排放在內(nèi)存的高地址端柒爸。

所謂的小端模式枉昏,就是低位字節(jié)排放在內(nèi)存的低地址端,高位字節(jié)排放在內(nèi)存的高地址端揍鸟。

5兄裂、函數(shù)指針

函數(shù)指針還是一個(gè)指針,它指向的是一個(gè)函數(shù)阳藻,這個(gè)指針變量里存的是一個(gè)函數(shù)的地址晰奖。

char * ( *fun)(char *p1, char *p2);

這里定義了一個(gè)函數(shù)指針,指針名為fun腥泥,指向函數(shù)fun匾南,這個(gè)函數(shù)的返回值類型是 char *,參數(shù)是char *p1, char *p2蛔外。

函數(shù)指針數(shù)組:

char * ( *pf)(char *p)這里定義了一個(gè)函數(shù)指針 pf蛆楞,既然如此那把這個(gè)指針放到數(shù)組里溯乒,這就形成了一個(gè)函數(shù)指針數(shù)組:

char * ( * pf[10])(char *p)

①數(shù)組名:pf

②數(shù)組元素:10個(gè)指向函數(shù)的指針。

③每個(gè)指針指向一個(gè)函數(shù)

④函數(shù)的返回類型為指向字符的指針豹爹,參數(shù)為一個(gè)指向字符的指針裆悄。

函數(shù)指針數(shù)組的用途:轉(zhuǎn)移表

函數(shù)指針數(shù)組指針:

函數(shù)指針數(shù)組指針就是一個(gè)指針, 這個(gè)指針指向一個(gè)數(shù)組臂聋,這個(gè)數(shù)組里存的是指向函數(shù)的指針光稼。

char * ( * (*pf)[10]) (char * p)

①這里定義了一個(gè)函數(shù)指針數(shù)組指針,指針變量名是pf孩等。

②指針指向一個(gè)有10個(gè)元素的數(shù)組艾君。

③數(shù)組里存的都是指向函數(shù)的指針。

④ 這些指針每個(gè)都指向一些函數(shù)肄方。

⑤指向的函數(shù)的返回值類型為指向字符的指針冰垄,參數(shù)為一個(gè)指向字符的指針肪虎。

記憶方法:

函數(shù)指針數(shù)組指針數(shù)組指針泛烙。

我們從右往左分析:

①指針:*pf

②數(shù)組指針:(* pf)[5]

③指針數(shù)組指針:(* (* pf) )[5]

④數(shù)組指針數(shù)組指針:( (* (* pf) )[5])[3]

⑤指針數(shù)組指針數(shù)組指針:( * ( (* (* pf) )[5]) )[3]

⑥函數(shù)指針數(shù)組指針數(shù)組指針:void * ( ( * ( (* (* pf) )[5]) )[3] ) ( )

分析(*(void(*)())0)()

①void(*)() 是一個(gè)函數(shù)指針類型愿汰,這個(gè)函數(shù)無參數(shù)蔚鸥,無返回值。

②(void(*)())0 把0強(qiáng)轉(zhuǎn)成函數(shù)指針類型碉渡,0是一個(gè)函數(shù)的首地址。

③(*(void(*)())0) 把地址為0的函數(shù)取出來。

④(*(void(*)())0)()拾徙,函數(shù)調(diào)用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末感局,一起剝皮案震驚了整個(gè)濱河市尼啡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌询微,老刑警劉巖崖瞭,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異撑毛,居然都是意外死亡书聚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門藻雌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雌续,“玉大人,你說我怎么就攤上這事胯杭⊙倍牛” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵做个,是天一觀的道長(zhǎng)鸽心。 經(jīng)常有香客問我滚局,道長(zhǎng),這世上最難降的妖魔是什么顽频? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任藤肢,我火速辦了婚禮,結(jié)果婚禮上冲九,老公的妹妹穿的比我還像新娘谤草。我一直安慰自己,他們只是感情好莺奸,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布丑孩。 她就那樣靜靜地躺著,像睡著了一般灭贷。 火紅的嫁衣襯著肌膚如雪温学。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天甚疟,我揣著相機(jī)與錄音仗岖,去河邊找鬼。 笑死览妖,一個(gè)胖子當(dāng)著我的面吹牛轧拄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播讽膏,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼檩电,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了府树?” 一聲冷哼從身側(cè)響起俐末,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奄侠,沒想到半個(gè)月后卓箫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡垄潮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年烹卒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弯洗。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旅急,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涂召,到底是詐尸還是另有隱情坠非,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布果正,位于F島的核電站炎码,受9級(jí)特大地震影響盟迟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜潦闲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一攒菠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧歉闰,春花似錦辖众、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至昼弟,卻和暖如春啤它,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舱痘。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工变骡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芭逝。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓塌碌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親旬盯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子台妆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一瓢捉。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu)频丘; ...
    朱森閱讀 3,430評(píng)論 3 44
  • 第十章 指針 1. 地址指針的基本概念: 在計(jì)算機(jī)中办成,所有的數(shù)據(jù)都是存放在存儲(chǔ)器中的泡态。一般把存儲(chǔ)器中的一個(gè)字節(jié)稱為...
    堅(jiān)持到底v2閱讀 1,065評(píng)論 2 3
  • 前言:指針是 C語言一個(gè)重要概念,也是C 語言的一個(gè)重要特色迂卢。使程序簡(jiǎn)潔某弦、緊湊、高效而克。指針乃是C之精華靶壮。 數(shù)據(jù)在內(nèi)...
    瀟湘候晨雪閱讀 757評(píng)論 0 0
  • 1. 變量 不同類型的變量在內(nèi)存中占據(jù)不同的字節(jié)空間。 內(nèi)存中存儲(chǔ)數(shù)據(jù)的最小基本單位是字節(jié)员萍,每一個(gè)字節(jié)都有一個(gè)內(nèi)存...
    C語言學(xué)習(xí)閱讀 1,282評(píng)論 0 4
  • L诮怠!碎绎!注意:因?yàn)楹?jiǎn)書的顯示格式緣故螃壤,所以“ * ”顯示會(huì)出現(xiàn)問題抗果,可能有些星號(hào)由于疏忽未改動(dòng)格式,造成沒有顯示奸晴,請(qǐng)...
    Eric_Hunter閱讀 680評(píng)論 0 0