指针与一维数组

        对于数组元素的访问,可以使用下标,也可以使用指针变量,移动指针可以指向数组中的任意一个元素。

        例如,一维数组和指针的如下定义

int a [5] = {1,2,3,4,5},*p;

p = a;

因为p是指向一维数组的首元素的指针。因此上述关系等价于

int a [5] = {1,2,3,4,5},*p;

p = &a[0];

我们可以利用运算符+,*,[]建立指针与一维数组的关系,如下

注意p[i]表达式中p不是数组名,是指针,这是指针的下标表示法

下面介绍四种访问数组元素的四种等价方式

#include<stdio.h>
int main()
int i,a[5]= {1,2,3,4,5},*p=&a[0];
printf("\na[i] :");
for(i=0;i<5;i++)
printf(" %3d" ,a[i]);   /*常规下标法访问数组元素*/
printf("\n*(a十i):");
for(i=0;i<5;i十+)/*数组名作为指针访问数组元素*/
printf("%3d",*(a+i));
printf("\npLi]n);
for(i=0;i<5;i++)/*指针变量下标法访问数组元素*/
printf(" %3d" ,p[i]);
printf("\n*(p+i):");
for(i=0;i<5;i十十)/*使用指针变量访问数组元素*/
printf("%3d", *(p+i));
return O;

a和p是有差别的,数组名a是一个指针常量,不可赋值,不能进行“a++”操作;p是一个指针变量,可赋值,可以进行“p++”操作。如下

#include<stdio.h>
int main()
{
    int a[5]={1,2,3,4,5},*p-a;
printf("\n *p十十:");
for( ;p<a+5;)
/*此处,*p十十不能用*a十十替换*/
printf("%3d",*p++);
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值