编辑:我要解释原始问题,因为它被认为过于笼统。
一个数组,例如
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)的值是什么?
答案 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。