C ++ Pointer Arithmetics

时间:2013-04-25 19:41:48

标签: c++ pointers

鉴于代码:

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

*(arr+i)arr[i]具有相同的效果吗?

2 个答案:

答案 0 :(得分:11)

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

  

后缀表达式后跟方括号中的表达式是后缀表达式。其中一个表达式应具有“指向T”的类型,另一个表达式应具有未映射的枚举或整数类型。结果是类型为“T的左值”。类型“T”应是完全定义的对象类型。 表达式E1[E2]*((E1)+(E2)) 完全相同(根据定义)。

答案 1 :(得分:1)

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

 *(arr +i) 

相当于:

 arr[i]