指针与一维数组
可以将一组数组的首地址或其元素的地址赋值给相同数据类型的指针变量,使该指针变量指向一维数组或其元素,进而利用该指针变量处理一维数组或其元素。
例
int a[10];
int *p;
p=&a[0];
根据指针的算术运算
p+i就是数组元素a[i]的地址
(p+i)是p+i所指向的数组元素,即a[i]
综上,引用一维数组的元素,可以用以下两种方法,
(1)下标法,如a[i]
(2) 指针法,如(a+i)
说了那么多,其实就是利用指针可以引用数组或数组元素
例题
#include<stdio.h>
int main()
{int a[3],*p,i;
p=a;
// printf("\n");
for(i=0;i<3;i++,p++)
{
scanf("%d",p);
}
p=a;
printf("\n");
for(i=0;i<3;i++,p++)
{
printf("%d ",*p);
printf("%p\n",p);
}
return 0;
}
运行结果
注意
程序中第一个"p=a;"将数组的首地址赋给指针变量p。由于使用for循环读入数组是对p进行自加,当第一个for循环结束后,p的值已经是“a+3”。所以,在使用变量怕输出数组元素值之前,要对p重新赋值。
运行结果,分别输出了变量的值和地址。
下一篇会增加一道例题,有兴趣的可以先自己尝试,再看答案,
下一篇 指针6(指针与数组2)