C++中的int (*ip)[4]
和int ip[4]
之間是否有區別?int(* ip)[4]與int ip [4]之間的區別?
-4
A
回答
4
C++中的
int (*ip)[4]
和int ip[4]
之間有什麼區別嗎?
是,int (*a)[4]
是指向的4個整數的數組,而int b[4]
是4個整數的數組。請注意,a
不是一個數組,它只是一個指針。下面是一個例子:
int main()
{
int a[5] = {2, 3, 6, 8, 10};
int (*b)[5] = &a; // assign the address of the array to the pointer
b[2] = 4; // dereferences the pointer and assigns a[2] to 4
}
另一個區別是,可以作爲一個參數傳遞的指針陣列來的功能,而不具有它經歷陣列到指針轉換。
void f(int (*array)[5]); // must have a size of 5
int main()
{
int a[10],
b[5];
f(&a); // NO
f(&b); // Okay
}
可以避免使用到陣列的參考傳遞地址。它具有與正常參考相同的語義,因此您可以簡單地將*
替換爲簽名中的&
。而你會做f(a)
和f(b)
。
0
int (*ip)[4]
與int ip[4]
之間的差異與例如int i
和int *i
之間的差異相同。一般而言,對於任何類型的T
,它與T t
和T *t
之間的差異相同。即前者聲明某種類型的對象T
,而後者聲明指向T
類型的對象。
從語法上看並不明顯,但情況並非如此。爲了進一步說明了,這些原始的聲明
int (*ip1)[4];
int ip2[4];
可以用下面的序列
typedef int FourIntsArray[4];
FourIntsArray *ip1; // <- same as `int (*ip1)[4]`
FourIntsArray ip2; // <- same as `int ip2[4]`
後者聲明是完全等同於原來的聲明所取代。
相關問題
- 1. int p = *(int *)i和int p = *(int *)&i之間的區別
- 2. 默認(int?)與(int?)之間的區別null
- 3. Java中的int a [5],int a [],int a [] = {2,3}之間的區別
- 4. int someInts [3]和int * someInts = new int [3]之間的區別?
- 5. uint和unsigned int之間的區別?
- 6. C#中char和int之間的區別#
- 7. Python 3.5 - '//'和'int()'之間的區別
- 8. int,NSInteger和NSUInteger之間的區別
- 9. 內部IP地址和外部IP地址之間的區別
- 10. EC2「彈性IP」和「IPv4公共IP」之間的區別
- 11. 新的int和new(int)之間的C++有什麼區別?
- 12. '(int)a','a as int'和C#中的Convert.ToInt32(a)之間的區別
- 13. INT ++遞增4
- 14. int(* p)[4]?
- 15. 表達式之間的區別:int * a = 0; int * a = 10;
- 16. foo(int * arr)和foo(int arr [])之間的任何區別?
- 17. int * p和int * p聲明之間的區別
- 18. 最終靜態int和靜態最終int之間的區別?
- 19. int [] []和int [,]之間的區別是什麼?
- 20. 返回值之間的區別int&和const int&
- 21. int fpurge()和int fflush()之間的區別C
- 22. C++中新int()和新int {}之間的區別
- 23. extern int a之間的區別; extern int a = 42;
- 24. 傳遞(int x)和(const int x)之間的區別
- 25. 「Convert.ToString(Nullable <int>)」和「Nullable <int> .ToString()」之間的區別?
- 26. 通過引用傳遞的int與int的傳遞地址之間的區別
- 27. php 4和php 5之間的區別?
- 28. int(floatvar)和(int)floatvar之間是否有區別?
- 29. Laravel 4中的Input :: flash()和Session :: flash()之間的區別4
- 30. Linux與Windows之間'INT'指令的區別
你有沒有嘗試過看看自己? – chris 2013-04-07 01:42:15
查找有關C和C++聲明的類似問題。 – 2013-04-07 01:42:29
不是,它不是int * ip [4]但是int(* ip)[4] – jiafu 2013-04-07 01:45:52