示例代码
#include<stdio.h>
int main(){
int a[10];
int *p,i;
p = a;//很重要!!!
printf("please enter 10 integer numbers: ");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%d\t",a[i]); //数组元素用数组名和下标表示
//printf("%d\t",*(a+i)); //通过数组名和元素序号计算元素地址,再找该元素
//printf("%d\t",*p++); //用指针指向当前的数组元素
return 0;
}
代码分析
(1)可以使用 a+i 表示 a[i],这里 a+i 与 a++ 不同。因为它并没有修改常量 a 的值,单独使用时,a++ 是等价于 a=a+1,它对 a 的值进行了修改。
(2)指针变量指向数组元素,注意指针变量的当前值
注意:
(1)p[i],*(p+i) 的形式必须先使 p = a。
(2)*p++ = *(p++) 与 *(++p) 作用是不相同的。前者是先取 *p 的值,然后使 p 加 1。后者是先使 p 加 1,再取 *p。