一、下标法
下标法是访问一维数组最常规的方法,通过具体的下标可访问对应位置的元素,如一个一维数组a[10],a[3]就是它的第4个元素的值。
c
#include<stdio.h>
int main()
{
int a[10];
int i;
printf("请输入10个整数:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
return 0;
}
二、指针法
如果需要通过指针访问数组元素,那就需要定义指向数组元素的指针变量。下面的例子就可以定义一个指向数组元素的指针变量。
int a[10]
int b;
...
b = &a[0];
把数组a首元素的地址赋值给b,使b指向a数组的第0号元素。表达式&a[0]正是数组名本身的值,所以下面这条赋值语句与上面的赋值语句完全等价:
b = a;
在前面定义的已有环境中,理解下面这个表达式的含义: (b+i)
首先b是一个指向整型的指针变量,加法运算的结果是另一个指向整型的指针,i的值根据整型数据的长度进行调整,它指向数组第0个元素向后移i个整数长度的元素。然后,间接访问操作访问这个新元素。
这个过程和下标引用a[i]的执行过程完全相同,那么,除了优先级外,下标引用和间接访问完全相同。由于数组名a的值是一个指针常量,下面这几个表达式是相同的:
a[i]
*( b + i )
*( a + i )
b[i]
c
#include<stdio.h>
int main()
{
int a[10];
int i;
printf("请输入10个整数:");
for(i=0;i<10;i++)
scanf("%d",a+i);
printf("\n");
for(i=0;i<10;i++)
printf("%d", *(a+i) );
printf("\n");
return 0;
}
三、指针变量法
c
#include<stdio.h>
int main()
{
int a[10];
int *p;
printf("请输入10个整数:");
for(p=a; p<a+10;p++)
scanf("%d",p);
printf("\n");
for(p=a; p<a+10;p++)
printf("%d",*p);
printf("\n");
}