数组变量衰减为指针

时间:2018-06-20 14:05:30

标签: c++ arrays pointers

编辑:我要解释原始问题,因为它被认为过于笼统。

一个数组,例如

  

int x [5] = {1,2,3,4,5};

*(x + 2)这样的表达式是什么意思?

答案:变量x衰减以充当指向数组第一个元素的指针,类似于为数组名称分配一个int指针:

  

int * ptr = x;

因此,*(x + 2)指向索引值2,因此在这种情况下具有值3。

原始问题:

  

static int x [8] = {10,20,30,40,50,60,70,80};

     

i)x是什么意思?

     

ii)(x + 2)是什么意思?

     

iii)* x的值是什么?

     

iv)(* x + 2)的值是什么?

     

v)*(x + 2)的值是什么?

1 个答案:

答案 0 :(得分:2)

x是8个int的数组,存储时间为static

需要注意的重要一点是,这个问题与指针衰减有关。

当您写(x + 2)时,x 衰减指向类型为int*的指针,地址设置为x的第一个元素。因此x + 2&x[2]相同;即第三个元素的地址。这称为指针算术

*x等效于x[0];您正在引用 x,因为它已衰减到指针。它的值为10。

*x + 2将该值10加2。

*(x + 2)x[2]相同,即30。