`
844604778
  • 浏览: 553372 次
文章分类
社区版块
存档分类
最新评论

数组 与 指针

 
阅读更多

学过C的应该都知道,可以通过指针访问数组元素。以下就是一个最简单的例子:

#include<iostream>
using namespace std;

int main(void)
{
int a[6] = {1,2,3,4,5,6};
int *p = a; //或者 = &a[0]
cout<<p[0]<<endl; //输出a[0]
cout<<*p<<endl;//输出a[0]

cout<<*(p+1)<<endl; //输出a[1]
cout<<p[1]<<endl;//输出a[1]
return 0;
}

上面都是一些很常见的例子,但是如果有p[-2]这种东西出现,你怎么看?(p还是上述定义的指针)如下面代码:

int main(void)
{
int a[6] = {1,2,3,4,5,6};
int *p = a;
p = p + 3;//指针后移
cout<<"p[0] = "<<p[0]<<endl;
cout<<"p[-2]= "<<p[-2]<<endl;
return 0;
}
输出的结果是: p[0] = 4 p[-2] =2

这是因为 p = p+3语句,将p指向a[3](元素4对应的位置),因此p[0] = 4,这不难理解。 让人费解的是,p[-2]下标是负数,由于下标是正数的时候 ,表示从p[0]

位置往移动,那么对应的,-2 就应该表示从p[0]位置往移动。但是必须注意的是,不能向左移的太多,不能向左移超过a[0],否则会出现内存错误。

PS:未完,待续。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics