C++指針與引用詳解

Q:指針是什么郎仆?

A:指針本身不存儲數(shù)據(jù)塌鸯,存儲的是數(shù)據(jù)存放的地址

? ? ? 一個變量的地址稱為該變量的“指針”炕婶,存放該地址的變量稱為指針變量姐赡。

指針必須得初始化,沒有初始化的指針指向的是未知的內(nèi)存地址柠掂,可能造成程序報錯项滑。所以我們需要對指針賦初值,對指針賦予空值我們常用NULL涯贞。

Q:NULL與nullptr有什么區(qū)別枪狂?為什么要提出nullptr危喉?

A:NULL在C++里就是宏定義,實質(zhì)就是0.

? ? ? 那這里就存在一個問題州疾,當(dāng)存在重載函數(shù)fun(char *)和fun(int)辜限,我們想要調(diào)用的是fun(char *),使用fun(NULL)會發(fā)現(xiàn)調(diào)用的是fun(int)严蓖。

? ? ? 為了解決這個問題薄嫡,Cli加入了nullptr關(guān)鍵字,nullptr可以轉(zhuǎn)換成任何指針類型和bool類型(為了兼容不同指針可以用if(ptr)判斷指針是否為空)颗胡,但是不能轉(zhuǎn)換成int類型

Q:三種傳遞方式分別是什么毫深?

A:值傳遞:形參是實參在棧中的拷貝,形參是實參的副本毒姨。從被調(diào)用函數(shù)來看哑蔫,值傳遞是單向的(實參—>形參),即參數(shù)值只能傳入弧呐。(效率低下)

? ? ? 指針傳遞:形參是指向?qū)崊⒌刂返闹羔樥⒚裕淖冃螀⒅赶虻刂返闹低瑯右矔淖儗崊⒌闹怠?/p>

? ? ? 引用傳遞:形參相當(dāng)于實參的“別名”,形參在棧泉懦。中開辟了空間稿黍,保存的是實參的地址。被調(diào)函數(shù)對形參進行的任何操作都被認(rèn)為是間接尋址崩哩。所以會影響實參的值。

Q:返回指針的函數(shù)可以返回值傳遞的形參的地址嗎言沐?

A:不能邓嘹。此時形參的地址為新的內(nèi)存地址而不是實參的地址,且在調(diào)用函數(shù)調(diào)用完畢后形參就被銷毀险胰,那么地址就不在作用域內(nèi)(形參在此時相當(dāng)于是局部變量)汹押。

Q:那么如何從函數(shù)中返回局部變量的地址呢?

A起便;1.使用靜態(tài)變量或全局變量代替局部變量

? ? ? 2.使用動態(tài)內(nèi)存分配

Q:什么是常量指針棚贾?什么是指針常量?

A:指向常量的指針是常量指針 const int *a=&b;

在聲明指針變量語句的變量名前加上const關(guān)鍵字榆综,則該指針變量就變?yōu)橐粋€常量妙痹。int *const a=&b;

Q:常量指針與指針常量之間的區(qū)別?

A:常量指針可以修改指針的指向?qū)ο蟊谴荒苄薷闹赶驅(qū)ο蟮闹怠????

? ? ? 指針常量可以修改指向?qū)ο蟮膬?nèi)容怯伊。


動態(tài)分配

Q:什么是動態(tài)內(nèi)存分配?

A:動態(tài)內(nèi)存分配就是從堆內(nèi)存中分配存儲空間判沟。new運算符可以從堆空間中分配內(nèi)存耿芹,并且返回分配空間的地址崭篡。

Q:為什么動態(tài)內(nèi)存分配可能會造成內(nèi)存泄露?

A:沒有及時使用delete釋放內(nèi)存空間吧秕,指針變量隨后指向其他內(nèi)存地址琉闪,那么就將無法釋放這塊內(nèi)存地址,這就叫做內(nèi)存泄露砸彬。

Q:什么叫垃圾回收機制颠毙?

A:不需要delete釋放內(nèi)存,CLR會自動維護內(nèi)存拿霉,當(dāng)不需要使用CLR分配的堆內(nèi)存空間時吟秩,CLR會自動釋放內(nèi)存


const void print(const int num)const

理解一下上面的概念,第一個const修飾返回類型 第二個const修飾參數(shù) 第三個const修飾調(diào)用對象


思考一下free之后的指針為空嗎绽淘?

free之后的指針仍然指向原來的堆地址涵防,即仍然可以繼續(xù)使用,但很危險沪铭。因為操作系統(tǒng)已經(jīng)認(rèn)為這塊內(nèi)存可以使用壮池,它會毫不考慮的將他分配給其他程序,于是你下次不小心使用到該指針(野指針)時杀怠,如果操作系統(tǒng)及時制止了這種行為椰憋,報錯(非法操作),然后將你的程序殺掉赔退,給你很容易改正錯誤的機會橙依,這還算比較好的結(jié)果!如果操作系統(tǒng)沒有制止這種行為硕旗,那么產(chǎn)生的后果可就說不準(zhǔn)了窗骑,說不定整個操作系統(tǒng)會崩潰,那么你再來改正這個錯誤漆枚,就不容易發(fā)現(xiàn)咯创译!所以,最好free了以后再置空墙基,即令指針?= NULL;软族,表示?本程序已經(jīng)放棄再使用該指針。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末残制,一起剝皮案震驚了整個濱河市立砸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌痘拆,老刑警劉巖仰禽,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡吐葵,警方通過查閱死者的電腦和手機规揪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來温峭,“玉大人猛铅,你說我怎么就攤上這事》锊兀” “怎么了奸忽?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長揖庄。 經(jīng)常有香客問我栗菜,道長,這世上最難降的妖魔是什么蹄梢? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任疙筹,我火速辦了婚禮,結(jié)果婚禮上禁炒,老公的妹妹穿的比我還像新娘而咆。我一直安慰自己,他們只是感情好幕袱,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布暴备。 她就那樣靜靜地躺著,像睡著了一般们豌。 火紅的嫁衣襯著肌膚如雪涯捻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天望迎,我揣著相機與錄音汰瘫,去河邊找鬼。 笑死擂煞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的趴乡。 我是一名探鬼主播对省,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼晾捏!你這毒婦竟也來了蒿涎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤惦辛,失蹤者是張志新(化名)和其女友劉穎劳秋,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡玻淑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年嗽冒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片补履。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡添坊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出箫锤,到底是詐尸還是另有隱情贬蛙,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布谚攒,位于F島的核電站阳准,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏馏臭。R本人自食惡果不足惜野蝇,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望位喂。 院中可真熱鬧浪耘,春花似錦、人聲如沸塑崖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽规婆。三九已至澜躺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抒蚜,已是汗流浹背掘鄙。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嗡髓,地道東北人操漠。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像饿这,于是被迫代替她去往敵國和親浊伙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

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