您能否告訴我int* p
和int *p
聲明之間的區別?int * p和int * p聲明之間的區別
11
A
回答
31
有沒有區別。
這是一個表示法,而不是語義學。二是少誤導,因爲
int *a, b;
清楚地聲明一個int*
和int
,而
int* a, b;
看起來好像它是聲明瞭兩個三分球,當它真正做上述同樣的事情。
3
這兩個聲明在聲明單個指針時是等效的。對於這個更多看link
17
這是一個很好的問題。
int* p
- 被C廣泛使用++程序員
int* p, q
錯誤地意味着既p
和q
是指針(導致偏好用於聲明此兩行上,這也提高了可讀性當存在是作業,並且使得更容易快速地剪切/粘貼或評論特定的線/變量)int* p
視覺separ茨從標識符*p
然後明確地指示取消引用類型(假設你把空間周圍的二進制operator*
ALA2 * 3
) 在C++
- 顯然服用而
...& x
必須聲明一個參考變量的地址,並... & ...
是按位與運算
...&x
int *p
- 廣泛使用d by C程序員
int *p, q
明確反映p
是指針而q
不是。int *p
視覺混淆與所述標識符的類型- 目視從指針引用不可區分的(更好或更壞)
類似地,對於出現在函數聲明類型...
int* f(), g(); // declares int g();
int *h(), (*i)(); // i is pointer to function returning int
int *const*m(), n(); // m returns pointer to (const-pointer to int)
// n returns int
...但至少函數參數不能變得如此毛茸茸 - 類型規範在每個逗號分隔符後重新開始。
綜上所述,int *p
是更好,如果您的編碼風格/代碼庫利用上的源代碼一行多個聲明,否則int* p
提供類型的更清楚的分離和下面的標識符。
對於這一切,人們的偏好很大程度上取決於他們習慣了什麼。
0
這兩個聲明是完全一樣的!
相關問題
- 1. int p = *(int *)i和int p = *(int *)&i之間的區別
- 2. int * p =&a ++和int * p =&++ a
- 3. int和signed int聲明之間的區別
- 4. '%p'和'my%p'之間的區別?
- 5. 關於「int const * p」和「const int * p」
- 6. while(* p){p ++;},while(* ++ p){;}和while(* p ++){;}之間有什麼區別?
- 7. int * x []和int(* x)[]之間的區別?
- 8. int * p和int ** p之間的指針語法差異指針C++
- 9. 爲什麼聲明空隙F(const int的* P)被修改p
- 10. 什麼INT * V [10]和INT(* P)之間的差值[10]
- 11. 應該int * p長int * p而不是?
- 12. 函數中* p和(* p)[3]之間的區別是什麼?
- 13. mkdir和mkdir -p之間的區別?
- 14. int someInts [3]和int * someInts = new int [3]之間的區別?
- 15. 有沒有在聲明中使用*運營商之間的差額爲(int * p =&i)和表達式(* p =&I)
- 16. * p [5]和(* p)[5]之間的區別是什麼?
- 17. p :: first-letter和p :: first-letter之間的區別是什麼?
- 18. (p span)和(p> span)之間的區別是什麼?
- 19. int(* p)[4]?
- 20. LFTP format_perms(int p)
- 21. $('。p')和$('p')jquery之間有什麼區別?
- 22. C#中char和int之間的區別#
- 23. int,NSInteger和NSUInteger之間的區別
- 24. uint和unsigned int之間的區別?
- 25. Python 3.5 - '//'和'int()'之間的區別
- 26. int和Integer之間的區別
- 27. Int和Uint8之間的區別swift
- 28. void main和int之間的區別主
- 29. defaultdict(lambda:None)和defaultdict(int)之間的區別
- 30. 函數定義中的指針與數組:void fct1(int * p)和void fct1(int p [])有什麼區別?
很好的解釋 – cc4re 2013-06-22 19:32:59