先解決兩個(gè)疑問(wèn)
◆ 指針和引用的不同之處是什么?
◆ 何時(shí)用用指針?何時(shí)用引用?
指針和引用的不同之處
看如下代碼:
指針是用來(lái)表示內(nèi)存地址的,而指針這個(gè)整數(shù)正是被指向的變量地址。
而引用就是給變量重新起了一個(gè)名字,引用也就是“別名”。
不同之處
◆ 指針在聲明時(shí)可以暫時(shí)不初始化,當(dāng)然每次使用指針時(shí)都要做檢查,以防出現(xiàn)空指針異常的問(wèn)題0。而引用永遠(yuǎn)都不會(huì)為空,它一定得代表某個(gè)對(duì)象。
◆ 指針存放的是地址,可以被重新賦值。而引用總是指向它最初代表的那個(gè)對(duì)象。
指針和引用使用場(chǎng)合
引用主要是作為函數(shù)的參數(shù)和返回值來(lái)使用的,看如下代碼:
通過(guò)vec[3] =3可改變vector容器的值,這是因?yàn)椋郏莶僮鞣祷氐木褪且?。也就是為?nèi)部的變量取了一個(gè)別名,還能讓?zhuān)郏莶僮鞣祷匾粋€(gè)指針,即*vec[3]=3。實(shí)際上引用可以做的事情指針都可以做,那為什么還要使用引用?
總結(jié)
用恰當(dāng)?shù)墓ぞ咦銮∪缙浞值墓ぷ鳌?/p>
指針可以毫無(wú)約束的操作內(nèi)存中的任何東西,功能十分強(qiáng)大,但也很危險(xiǎn),所以可以在恰當(dāng)?shù)臅r(shí)機(jī)使用引用。當(dāng)你需要指向某個(gè)東西,絕不會(huì)讓其指向其它東西,例如有些函數(shù)參數(shù)為了避免拷貝可以使用引用,或者實(shí)現(xiàn)一個(gè)操作符而其語(yǔ)法需求無(wú)法由指針達(dá)成,例如vec[3]=3,可以使用引用,而其它任何時(shí)候,都要使用指針。
編輯:jq
-
內(nèi)存
+關(guān)注
關(guān)注
8文章
3055瀏覽量
74327 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
62971 -
代碼
+關(guān)注
關(guān)注
30文章
4825瀏覽量
69046 -
Vector
+關(guān)注
關(guān)注
3文章
62瀏覽量
8664
原文標(biāo)題:C語(yǔ)言面試-指針和引用的使用場(chǎng)景?
文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論