所谓数组元素的指针就是数组元素的地址。引用数据元素可以用下标法(如[3]),也可以用指针法,即通过指向数组元素的指针找到所需的元素。使用指针法能使目标程序质量高(内存占用少,运行速度快)。
int a[10]; (定义a为包含10个整型数据的数组)
int *p; (定义P为指向整型变量的指针变量)
p = &a[10]; (或者p=a; or int *p = &a[10] or int *p = a)
C 语言规定数组名代表数组中的说元素的地址。
如果p的初值为&a[10],则
1.p + i 和 a+ i就是a[i]的地址,或者说,他们指向a数组的第i个元素。
2.(p+i)或(a+i)时p + i 和 a+ i所指向的元素,即a[i].
3.指向数组指针的指针变量也可以带下标,如p[i]与*(p+i)等价。
程序例子:输出数组中的全部元素
1.下标法
//下表法
#include
void main()
{int a[10];
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
2.通过数组名计算数组元素地址,找出元素的值
#include
void main()
{int a[10];
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
printf("%d",*(a+i));
printf("\n");
}
3.用指针变量指向元素
#include
void main()
{int a[10];
int i,*p;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(p=a;p<(a+10);p++)
printf("%d",*p);
printf("\n");
}
1和2的运行效率是一样的。
第3比1和2运行速度快,
下标法比较直接
注意事项:注意指针变量的运算