一维数组的访问

2、以指针的方式访问数组

对于一个数组,数组名就是数组的指针,也可以理解未数组占有空间的首地址。

比如


int a[2];

a  ----------> a[0]

a+1 -------> a[1]       //这里的+1 ,+2,叫做偏移量,一般先确定a的地址 然后再通过偏移量来确定具体的地址。                                                                                                   

a+2--------> a[2]


在数组名上直接加数字,相当于a[ 0 + 1]== a+1.也就是加的不是地址移动一个字,而是让他移动这个数组的类型的字节。

比如说 : 这里定义了为int 就移动4个字节。如果定义的数组是double型的,那么就移动8个字节。

也就是偏移量以数组元素类型为单位。

有如下表现形式

a == &a[0]; a+1 == &a[1]; a+i == &a[i];     //特别的  *(a + i)是访问数组的指针方式。

下面直接上例子:

#include <iostream>
using namespace std;
int main () 
{ 
    int a[]={1,3,5,7,9}, i, *p;
    for (i = 0; i < 5; i++)
        cout << "a["<< i << "] = " << a{i]<< endl;    //1、以下标方式访问
    
    for (p = a; i <5; i++)
        cout  << "a["<< i << "] = " << p[i] <<endl;    //2、 以指针作为下标访问  //这里我就只是觉得像给他换个名字。

    for (i = 0; i < 5; ++i)       
        cout  << "a["<< i << "] = " <<* (a+i)<< endl ;  //3、 以指针方式访问

    for (p = a ;p <a + 5; p++)
        cout  << "a["<< i << "] = " << *p << endl;      //4、 以指针间址的方式访问
}

上面的例子介绍了

1、下标方式访问 2、指针方式作为下标访问 3、指针方式直接访问 4、指针间址的方式访问

程序中 这里特别提醒下 方法4的计算效率更加快点 

前面提及到 计算机是先通过确定a的地址 然后再通过偏移量进一步确定具体的地址 

然而方法4中 指针变量进行p++计算 不用每次计算数组元素的地址 因此效率更高

这里需要注意的是 如果有

for (i = 0; i < 5; a++)
    cout <<"a["<<i<<"]="<<*a<<endl;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亚里士多没有德775

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值