引用数组的方法

时间:2012-10-13 05:28:53

标签: c++ pointers

  

可能重复:
  C: How come an array’s address is equal to its value?

有人可以帮我解释数组衰减吗?具体来说,我很困惑1)数组如何引用自身,2)当我定义

时是否正确?
int array[] = { 45, 67, 89 };

那么数组,&数组和&数组[0]都引用这个数组?我发现它们在打印时看起来是相同的输出,但是它们在内存中也指的是完全相同的东西吗?

3 个答案:

答案 0 :(得分:8)

  

那么数组,&数组和&数组[0]都引用这个数组?

内存位置相同,但类型不同。

  • array就是这样:一个包含3个整数的数组
  • &array的类型为int (*)[3],指向数组的指针
  • &array[0]的类型为int *,指向单个整数的指针

答案 1 :(得分:2)

array,在值上下文中是int *类型,指针指向数组的第一个元素。 &array,类型为“int数组[3]的指针”并指向整个array&array[0]的类型为int *,并指向数组的第一个元素。

因此,&array[0]array相同,如果在值上下文中使用array 。 {/ 1}}运算符中包含array未在值上下文中使用的一种情况。因此:sizeof将与sizeof array不同。

我们举一个例子:

sizeof &array[0]

另请参阅:http://web.torek.net/torek/c/pa.html

答案 2 :(得分:0)

它们都指的是相同的内存位置,但差别不大。 array&array引用整个数组,以第一个元素的地址开头,而&array[0]仅引用数组中的第一个元素。