0

给定代码:

int arr[] = {11,22,33,44,55}
for(int i = 0; i <5 ; i++)
    cout << *(arr+i) << " ";

有没有*(arr+i)一样的效果arr[i]

4

2 回答 2

11

是的。实际上,下标运算符E1[E2]被定义为等价于*((E1)+(E2))

后缀表达式后跟方括号中的表达式是后缀表达式。其中一个表达式应具有“指针T”类型,而另一个应具有无作用域枚举或整数类型。结果是“<code>T”类型的左值。类型“<code>T”应该是一个完全定义的对象类型。该表达式E1[E2]与 (根据定义)相同*((E1)+(E2))

于 2013-04-25T19:44:10.803 回答
1

是的。数组衰减到pointers. 数组名指向数组的第一个元素。所以

 *(arr +i) 

相当于:

 arr[i]
于 2013-04-25T19:43:44.283 回答