我想知道intp與intp有什麼不同

2021-03-07 00:31:02 字數 4116 閱讀 4149

1樓:大野瘦子

一、意思不同

int *p和int* p後者比前者更好理解為指標。int *p;可能會被理解為乙個變數,名為*p,int* p;很直觀的被理解為乙個指標,名為p。

二、強調型別不同

*p是乙個int』這裡*和p綁在了一起——這就是c的風格,這種風格強調的是語法。而乙個典型的c++程式設計師會寫「int*p」,並告訴你「p是乙個指向int的指標,p的型別是int*」。這種風格強調的是型別。

三、用法不同

int* p, p1; // probable error: p1 is not an int*

這裡,把*放得離p近一點也同樣不能澄清問題:

int *p, p1; // probable error

為了保險起見,只好一次宣告乙個變數了——特別是當宣告伴隨著初始化之時。

int* p, p1; // probable error: p1 is not an int*

而int* p = &i;

int p1 = p; // error: int initialized by int*

它會報錯。

2樓:匿名使用者

c++作者對這個有過解釋,鏈結為

對應內容翻譯如下(來自

q: 「int* p;」和「int *p;」,到底哪個正確?

3樓:青鳥中關村專家

從語法上講,沒有區別。

從命名規範上講,int *p和int* p後者比前者更好理解為指標。

int *p;可能會被理解為乙個變數,名為*pint* p;很直觀的被理解為乙個指標,名為p建議平時採用後者書寫。

4樓:藍之墮落哀傷

這個真沒不同,是一樣的,編譯出來都是指標型別的變數,不過良好的書寫習慣是前面那種方式,不容易誤解看錯。

5樓:匿名使用者

頂多就是寫法的區別,其實沒有區別,都是定義int型的指標p,編譯器編譯出來都一樣的,所以這兩個沒有區別。

6樓:匿名使用者

int *p p是指標,指向int變數。

int* p p是變數,它儲存乙個指向int的指標的值

7樓:淡騰搖銘

一樣的,但是最好標記符緊挨定義變數

8樓:我了個去_去啊

一樣的啊 習慣而已

const int *p和int * const p的區別

9樓:育知同創教育

const int *p和int * const p的區別如下:

const int *p表明指向的物件是const型,不可以修改,但是指標p的指向可以修改。

* const p表明指標變數p是const型,它的指向不可修改,但是指向的物件可以修改。

一般來說用*限定的是指標區域存放的內容,不用*的是記憶體位址。

10樓:刀無極啊

你可以看看這篇文章,講的很仔細

c++中int*&p和int&*p的區別

11樓:仁昌居士

c++中int *&p和int &*p的區別為:性質不同、 使用不同、訪問不同。

一、性質不同

1、int *&p:int *&p是指標的int型別引用。

2、int &*p:int &*p是引用的int型別指標。

二、 使用不同

1、int *&p:int *&p是指標 的 別名 ,可以當成指標使用。

2、int &*p:int &*p指標不能指向引用,不具有確定的儲存,無法直接使用。

三、訪問不同

1、int *&p:int *&p可以直接訪問得到指標指向的數值。

2、int &*p:int &*p無法訪問得到表示引用的儲存的數值。

12樓:匿名使用者

int &*p; 是不正確的,*與p靠得最近,所以p是乙個指標,但是這個指標的型別是int &,所以這個是錯吳的, 因為不能建立引用的指標。

int *& p, 是正確的, &與p靠得最近,所以p是乙個引用,這個引用的型別是int*,也就是乙個指標變數的引用,但是必須初始化,否則也是錯誤的。.

13樓:匿名使用者

如果按照正常的解讀(從右到左),

int*&p 是 指標的引用。 他是乙個 指標 的 別名,一般可以當成 指標 使用。有時候,可以直接他的值,成為其他指標的引用

int&*p 是 引用的指標,這個是非法的,指標不能指向引用。引用不具有確定的儲存,無法間接訪問得到表示引用的儲存的左值,所以乾脆人為規定禁止構造指向引用的指標型別。

14樓:匿名使用者

前者是位址的指標

後者是指標的位址

「int **p」和「int *p」有什麼區別?

15樓:怕不他啊不了

int *p表示的是一級指標,表示p所指向的位址裡面存放的是乙個int型別的值。

int **p表示的是二級指標,表示p所指向的位址裡面存放的是乙個指向int型別的指標。

一級指標存放變數的位址,指向的值是變數的內容。如int* p=, p=陣列的首位址,*p=陣列的第乙個值;

二級指標存放一級指標的位址,指向一級指標。如int*p =, int**pp=&p,pp=指標p的首位址,*pp=陣列的首位址,**pp=陣列第乙個值1。

指標陣列的陣列名傳遞引數對應為指標的指標即二級指標,二維陣列的陣列名傳遞引數對應為陣列指標即指向一維陣列的指標

一級指標通過形參,可以修改實參中指標所指向的位址中的值。修改不了實參中指標所指向的位址。需要借助二級指標才可以。

16樓:尉詩桃牟畫

int*p

:一級指標,表示p所指向的位址裡面存放的是乙個int型別的值int**p

:二級指標,表示p所指向的位址裡面存放的是乙個指向int型別的指標(即p指向的位址裡面存放的是乙個指向int的一級指標)

例如:int

i=10;

//定義了乙個整型變數

int*p=&i;

//定義了乙個指標指向這個變數

int**p1=&p;

//定義了乙個二級指標指向p指標

那麼取出10的值方式為:

printf("i=[%d]\n",*p);

printf("i=[%d]\n",**p1);

int (*p)[3] 和 int p[3] 有什麼區別呀?

17樓:好紅客

int p[3] 是定義了乙個整型陣列 p ,陣列大小為 3

int (*p)[3] 是定義了乙個陣列指標 p ,用於指向乙個大小為 3 的整型陣列

還有疑惑,可以 hi 我!

18樓:匿名使用者

變數申明的組copy成結構:

型別 變數名

首先這兩bai個變du量申明都是乙個長度為3的陣列的:zhi[3] 相同點刨除不看dao,下面看不同點:

前者的型別為 int (*) 變數名為p

後者的型別為 int 變數名為p

很明顯,差異在於:前者申明的是乙個int型的指標,而後者申明的是int型整數

19樓:匿名使用者

我覺bai

得不肯能出現這種情況首

du先有括號所以先執行zhi*p,表明p是個指dao針變數,而int p[3]p是個專陣列名,陣列名是屬個位址常量,所以這兩個不肯能出現在一起的,這就好比兩個不同程式裡只因為識別符號相同就相互比較,比較起來有什麼意義嗎?

20樓:匿名使用者

int a[3]

int (*p)[3]

那麼可以 p=a來操作a

a是陣列,p是陣列指標

我想知道礦工和正常離職有什麼區別曠工有什

曠工屬於違反用人單位的規章制度的,用人單位不用支付勞動者賠償金。用人單位正常辭退勞動者,需要支付勞動者工齡工資作為賠償。按照一年乙個月,6個月到不滿一年按照乙個月計算,不滿6個月的按照半個月計算。用人單位違法辭退勞動者,用人單位需要安裝2倍工齡工資支付勞動者賠償金。離職就是離開現有的職位。員工離職分...

我想知道我村是否有創業貸款,我想知道自己是否還可以貸款

你可以諮詢你們村委會的。申請條件 身份 及營業場所證明 貸款申請人必須具備合法有版效的身份證明權和在貸款行所在地合法居住的證明,以及固定的住所或營業場所。固定住所的證明可以是房產證 父母名字的房產證也可 營業場所的證明應該持有工商行政管理機關核發的營業執照及相關行業的經營許可證,說明正在從事正常的生...

我就想知道高階主機板和低端主機板最直觀的有什麼區別

主機板的用bai料做工功能擴充套件都是技du術成zhi本。最直觀的,dao 也是最現實的,就是 內差距巨大容啦。如技嘉aorus z270x gaming 9主機板 5299 技嘉z270m d3h 主機板 999 昂達h110c全固版 299 怎麼區分高階主機板和低端的主機板 主機板系列就可以分抄...