C++ Primer中&、*符號(hào)的多重定義與int *p和int* p的區(qū)別講解
& 和*這樣的符號(hào),既能用作表達(dá)式里的運(yùn)算符,也能作為聲明的一部分出現(xiàn),符號(hào)的上下文決定了符號(hào)的意義:
int i = 42; int &r = i; //&緊隨類型名出現(xiàn),因此是聲明的一部分,r是一個(gè)引用 int *p; //*緊隨類型名出現(xiàn),因此是聲明的一部分,p是一個(gè)指針p p = &i; //&出現(xiàn)在表達(dá)式中,是一個(gè)取地址符 *p = i; //*出現(xiàn)在表達(dá)式中,是一個(gè)解引用符 int &r2 = *p; //&是聲明的一部分,*是一個(gè)解引用符
在聲明的語(yǔ)句中,&和*用于組成復(fù)合類型;在表達(dá)式中,他們的角色又轉(zhuǎn)變成運(yùn)算符。在不同場(chǎng)景下出現(xiàn)的雖然
是同一個(gè)符號(hào),但是由于含義截然不同,所以我們完全可以把他們當(dāng)做不同的符號(hào)來看待。
根據(jù)C++Primer介紹:
對(duì)于int* p(這種寫法合法,但是容易造成誤導(dǎo)),其基本數(shù)據(jù)類型是int,后面的*其實(shí)是聲明符。在一組公用的數(shù)據(jù)類型后面可以使用不同的聲明符。例如:
int i =1024, *p = &i, &r = i; //i是一個(gè)int類型的數(shù)據(jù),p是一個(gè)int型的指針,r是一個(gè)int型引用。
對(duì)于int *p,其和int* p的含義一樣,都表示int類型的指針變量p。
但是將聲明符緊跟著變量名是一種更容易理解的做法。否則可能會(huì)出現(xiàn)誤導(dǎo)現(xiàn)象:
例如
int* p1, p2;表示含義是p1是一個(gè)int型的指針,p2是一個(gè)int型變量。而不是p1,p2都是指針變量,它們共用的是基本數(shù)據(jù)類型部分。
如果寫成int *p1,p2;則和上式表示的含義完全一樣,但是更加清晰,不會(huì)造成誤導(dǎo)。
不過對(duì)于以上兩種寫法的使用,主要看個(gè)人的習(xí)慣,但是最好不要混用。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
C語(yǔ)言修煉之路數(shù)據(jù)類型悟正法?解析存儲(chǔ)定風(fēng)魔上篇
使用編程語(yǔ)言進(jìn)行編程時(shí),需要用到各種變量來存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么2022-02-02
詳解C語(yǔ)言中的char數(shù)據(jù)類型及其與int類型的轉(zhuǎn)換
這篇文章主要介紹了詳解C語(yǔ)言中的char數(shù)據(jù)類型及其與int類型的轉(zhuǎn)換,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08
如何為Qt視圖中的文字實(shí)現(xiàn)彩虹漸變效果
這篇文章主要給大家介紹了關(guān)于如何為Qt視圖中的文字實(shí)現(xiàn)彩虹漸變效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Qt具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
解析C++無(wú)鎖隊(duì)列的實(shí)現(xiàn)代碼
本篇文章是對(duì)C++無(wú)鎖隊(duì)列的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
一文帶你了解C++中的右值引用與移動(dòng)語(yǔ)義
本篇文章主要為大家詳細(xì)介紹了C++中的右值引用與移動(dòng)語(yǔ)義的相關(guān)知識(shí),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2023-03-03
C++編譯報(bào)錯(cuò):||error: ld returned 1 exit 
這篇文章主要介紹了C++編譯報(bào)錯(cuò):||error: ld returned 1 exit status|的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
c++中移動(dòng)語(yǔ)義和完美轉(zhuǎn)發(fā)及易錯(cuò)點(diǎn)
C++ 中的移動(dòng)語(yǔ)義和完美轉(zhuǎn)發(fā)是 C++11 引入的兩個(gè)重要特性,它們分別用于提高性能和靈活性,這篇文章主要介紹了c++中移動(dòng)語(yǔ)義和完美轉(zhuǎn)發(fā),需要的朋友可以參考下2023-09-09

