一维数组输入输出

如题所述

方法一、数组的下标法

如:

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]);

}

方法二、数组名首地址法(指针法):指针增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));

}

方法三、移动指针变量法:

说明:指向同一数组中不同元素的指针的关系运算用于比较他们所指元素在数组中的前后位置关系。指针的算术运算(如增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);

}

方法四、指针下标法:

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)  //

}

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网