一个C++数组小知识

#include<iostream>
using namespace std;
int main()
{
    int a[]={1,2,3,4,5};
    cout<<a[3]<<endl;
    cout<<3[a]<<endl;
    cout<<(a+2)[1]<<endl;
    cout<<1[a+2]<<endl;
}

以上代码均能正确运行。

C++ 允许对指针进行灵活的算术运算,包括将整数与指针相加。

i[a] 会被解析为 *(a + i),因此 3[a]能正常运行。

特别的,i[a + j] 和 (a + i)[j] 会被解析为 *(i + (a + j)) 和 *((a + i) + j) ,也就是 *(a + i + j),因此 1[a + 2] 和 (a+2)[1] 也能正常运行。

(为了可读性和同事的血压考虑,不建议日常开发使用=)

但 [a + j], [a] i,  [i] a  会报错,也就是  数组访问运算符 [ ] 在方括号前和方括号中 必须有一个整数表达式和一个指针或数组名。

有任何错误欢迎指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值