C指針->函數(shù)形參int*p與int**p的區(qū)別

首先看代碼:

void fun(int * p) ;
int * pBuf = NULL;                                    //****************(1)
fun(pBuf);                                            //****************(2)
void fun(int * p)                                     //****************(3)
{
      p = (int*)malloc(10*sizeof(int));               //****************(4)
}

下面分析一下在每行代碼中都發(fā)生了什么:

在 (1) 中,聲明pBuf為int *類型虫腋,指向int類型身冬。此時(shí),pBuf 是指針岔乔,其是有值的,即有內(nèi)存地址(假如是:0x00007fff5fbff620)滚躯,但其指向的內(nèi)存卻為空NULL雏门。

在 (2) (3)中,pBuf 作為實(shí)參傳入函數(shù) fun(int * p) 中(p為形參掸掏,此時(shí)p為int * 類型茁影,指向int類型)。p =pBuf丧凤,亦為0x00007fff5fbff620募闲,具有相同地址。

在 (4) 中愿待,malloc申請(qǐng)一塊內(nèi)存浩螺,并返回指向此內(nèi)存的地址,并給了p仍侥,此時(shí) p 指向了malloc申請(qǐng)的內(nèi)存要出,p有了新的地址,與pBuf不再相等农渊,不再為0x00007fff5fbff620患蹂。而此時(shí)pBuf卻沒有改變,依然是0x00007fff5fbff620砸紊。

所有這種方法并不會(huì)為pBuf改變什么传于,仍然指向NULL。但是pBuf是有內(nèi)存地址的(初始化的時(shí)候就有),卻指向NULL醉顽,即并沒有開辟內(nèi)存沼溜,所有不能對(duì)pBuf進(jìn)行賦值,因?yàn)槠錄]有內(nèi)存存儲(chǔ)值徽鼎。

再看另一種方式:

void fun(int ** p) ;
int * pBuf = NULL;                                     //****************(1)
fun(&pBuf);                                            //****************(2)
void fun(int ** p)                                     //****************(3)
{
      *p = (int*)malloc(10*sizeof(int));               //****************(4)
}

同樣的分析一下上面每行代碼中都發(fā)生了什么:

在 (1) 中盛末,與第一段代碼沒什么區(qū)別。假如:pBuf = 0x00007fff5fbff620否淤,&pBuf=0x00007fffaaae0f70悄但,* pBuf = NULL。

在 (2) (3)中石抡,&pBuf作為實(shí)參傳入函數(shù)fun(int ** p)中(p為形參檐嚣,此時(shí)p為int** 類型,即為指針的指針),p=&pBuf(0x00007fffaaae0f70)嚎京。指向 int* 類型嗡贺,即指向了指針,這個(gè)指針其實(shí)就是pBuf鞍帝,即 p 指向了 pBuf 诫睬,所以 * p其實(shí)就是 pBuf (0x00007fff5fbff620)。此時(shí)別忘記帕涌,0x00007fff5fbff620 是指向NULL的摄凡。

在 (4) 中,malloc申請(qǐng)一塊內(nèi)存蚓曼,并返回指向此內(nèi)存的地址亲澡,并給了 *p,此時(shí) *p 指向了malloc申請(qǐng)的內(nèi)存纫版。此時(shí) p依然沒有改變床绪,與&pBuf相等(0x00007fffaaae0f70),但是p指向的地址卻改變了其弊,指向了一塊新的內(nèi)存癞己。所以0x00007fffaaae0f70指向的一個(gè)新的內(nèi)存地址,而這個(gè)內(nèi)存地址也指向的一塊內(nèi)存梭伐,不再是NULL末秃。

總結(jié):
第一段代碼,傳入了指向空內(nèi)存的地址籽御,最后改變了形參p的地址练慕,與傳入的pBuf不再相等,所有沒有對(duì)pBuf進(jìn)行改變什么技掏。
第二段代碼铃将,傳入了指向指針pBuf的指針,最后改變的是p指向的地址哑梳,而p依然是指向指針pBuf的指針劲阎。最后其實(shí)是改變了傳入的指針的指向,即改變了&pBuf的指向鸠真,讓其指向了新的地址悯仙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吠卷,隨后出現(xiàn)的幾起案子锡垄,更是在濱河造成了極大的恐慌,老刑警劉巖祭隔,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件货岭,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)千贯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門屯仗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搔谴,你說我怎么就攤上這事魁袜。” “怎么了敦第?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵慌核,是天一觀的道長。 經(jīng)常有香客問我申尼,道長,這世上最難降的妖魔是什么垫桂? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任师幕,我火速辦了婚禮,結(jié)果婚禮上诬滩,老公的妹妹穿的比我還像新娘霹粥。我一直安慰自己,他們只是感情好疼鸟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布后控。 她就那樣靜靜地躺著,像睡著了一般空镜。 火紅的嫁衣襯著肌膚如雪浩淘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天吴攒,我揣著相機(jī)與錄音张抄,去河邊找鬼。 笑死洼怔,一個(gè)胖子當(dāng)著我的面吹牛署惯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播镣隶,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼极谊,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了安岂?” 一聲冷哼從身側(cè)響起轻猖,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎域那,沒想到半個(gè)月后蜕依,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年样眠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了友瘤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡檐束,死狀恐怖辫秧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情被丧,我是刑警寧澤盟戏,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站甥桂,受9級(jí)特大地震影響柿究,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜黄选,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一蝇摸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧办陷,春花似錦貌夕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至制圈,卻和暖如春们童,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鲸鹦。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國打工病附, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亥鬓。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓完沪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嵌戈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子覆积,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

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