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. const int&x = 4和const int x = 4之间的区别
- 2. int * x []和int(* x)[]之间的区别?
- 3. int p = *(int *)i和int p = *(int *)&i之间的区别
- 4. 默认(int?)与(int?)之间的区别null
- 5. Java中的int a [5],int a [],int a [] = {2,3}之间的区别
- 6. int someInts [3]和int * someInts = new int [3]之间的区别?
- 7. C#中char和int之间的区别#
- 8. int,NSInteger和NSUInteger之间的区别
- 9. uint和unsigned int之间的区别?
- 10. Python 3.5 - '//'和'int()'之间的区别
- 11. int和Integer之间的区别
- 12. Int和Uint8之间的区别swift
- 13. void main和int之间的区别主
- 14. defaultdict(lambda:None)和defaultdict(int)之间的区别
- 15. EC2“弹性IP”和“IPv4公共IP”之间的区别
- 16. 内部IP地址和外部IP地址之间的区别
- 17. 新的int和new(int)之间的C++有什么区别?
- 18. '(int)a','a as int'和C#中的Convert.ToInt32(a)之间的区别
- 19. foo(int * arr)和foo(int arr [])之间的任何区别?
- 20. int * p和int * p声明之间的区别
- 21. 传递(int x)和(const int x)之间的区别
- 22. static_cast <int>(var)和*(int *)&var之间的区别是什么?
- 23. int fpurge()和int fflush()之间的区别C
- 24. 表达式之间的区别:int * a = 0; int * a = 10;
- 25. int和signed int声明之间的区别
- 26. int main()和int main(void)之间的区别?
- 27. (int *)arr [2]和int * arr [2]之间的区别是什么?
- 28. “Convert.ToString(Nullable <int>)”和“Nullable <int> .ToString()”之间的区别?
- 29. 最终静态int和静态最终int之间的区别?
- 30. int *和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