C语言中的指针与下标

在C语言中所以可以使用下标的地方都可以使用指针来实现,指针和下标在编译器中都是以指针的形式来实现的,例如:

并且他们之前存在这样一个关系:下标绝不会比指针有效率,但指针有时会比下标有效率。

例如下面的两个例子:

在例 1 中,为了对下标表达式求值,程序在首选要求出变量 i 的值,然后将变量 i 的值乘以 4 (假定这里整型占用4个字节),这个乘法运算需要花费一定的时间,因为 i 的值每次循环都会不同因此这个乘法指令每次循环都将执行;

在例 2 中,虽然与例 1 实现的功能完全相同,但是在实现中却存在一个重要的区别,在 for 循环的调整部分,实际上加的是 4 (整型所占用的字节数)因为每次执行时调整运算的指令都是相同的属(1*4),结果在编译时这个乘法指令只执行一次,而程序在下次循环时就不会再次执行这个乘法运算而是每次加 4 。

上面的两个例子证明的指针比下标更有效率的场合:在数组中一次以某个固定的数字移动时,在与固定数字的相乘都会在编译时完成,在运行时可以减少指令的执行,这样程序更有效率,更快。(但是以现在的机器形成来看这种差别微乎其微几乎可以忽略不计,如果使用指针破坏了程序的可读性反而还不如使用下标,编写程序的原则是不要因为效率的微小差别而牺牲程序的可读性)

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值