偶然翻到一篇以前写下的想法,对数组输入时用指针进行定位而不是用数组元素下标,遂尝试着进行验证想法。
第一种是指针自增运算p++
#include<stdio.h>
int main()
{
int a[10];
int *p=a;
for(int i=0; i<10; i++,p++)
scanf("%d", p);
for(int i=0,*p=a; i<10; i++,p++)
printf("%d ", *p);
return 0;
}
p++形式的第二代,减少了额外的变量使用,直接用数组末尾的地址进行控制:
#include<stdio.h>
int main()
{
int a[10];
for(int *p=a; p!=&a[9]; p++)
scanf("%d", p);
for(int *p=a; p!=&a[9]; p++)
printf("%d ", *p);
return 0;
}
第二种是引入辅助变量“ i ”来实现指针指向位置的变化
#include<stdio.h>
int main()
{
int a[10];
int *p=a;
for(int i=0; i<10; i++)
scanf("%d", p+i);
for(int i=0; i<10; i++)
printf("%d ", *(p+i));
return 0;
}
第二种的好处是指针p可以在不影响循环体的情况下自由改变所指向的数组,灵活性要比第一种好不少。