一维数组元素的输入输出方法总结
1、数组的下标法:直观且容易理解
如:
int a[5],i;
printf("Input five numbers:");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<5;i++)
{
printf("%4d",a[i]);
}
2、数组名首地址法(指针法):指针增1运算的执行效率很高,利用指针的增1运算实现指针的移动,省去了每寻找一个数组元素都要进行的指针算术运算,执行效率最高。
说明:数组名有特殊含义,他代表存放数组元素的连续存储空间的首地址,即指向数组中第一个元素的常量指针,如"a+i"代表数组中下标为i的元素a[i]的地址(&a[i]),而"*(a+i)"表示取出首地址元素后第i个元素的内容,即下标为i的元素"a[i]"。
int a[5],i;
printf("Input five numbers:");
for(i=0;i<5;i++)
{
scanf("%d",a+i);
}
for(i=0;i<5;i++)
{
printf("%4d",*(a+i));
}
3、移动指针变量法:
说明:指向同一数组中不同元素的指针的关系运算用于比较他们所指元素在数组中的前后位置关系。指针的算术运算(如增1和减1)用于移动指针的指向,使其指向数组中的其他元素。
注意:p++和p+1是本质不同的两个操作。同:都对指针变量p进行加1运算 异:p+1不改变当前指针的指向,p仍指向原来指向的元素,p++讲指针变量p向前移动一个元素的位置,指向下一元素,p++是加上1*sizeof(基类型)个字节。
int a[5],*p;
printf("Input five numbers:");
for(p=a;p<a+5;p++) 注意:p是指针变量,可以通过赋值操作改变他的值,使p指向数组中其他元素,而数组名a是一个常量指针,代表一个地址常
{ 量,其值是不能被改变的。
scanf("%d",p);
}
for(p=a;p<a+5;p++)
{
printf("%4d",*p);
}
4、指针下标法:
int a[5], *p=NULL, i;
printf("Input five numbers:");
p=a; // p=a等价于p=&a[0] //
for(i=0;i<5;i++)
{
scanf("%d", &p[i] ); // &p[i]等价于p+1 //
}
p=a; // 在再次循环开始前,确保指针p指向数组首地址 //
for(i=0;i<5;i++)
{
printf("%4d", p[i] ); // p[i]等价于*(p+i) //
}