18. (拔高)以下程序的运行结果是( )。
void f1(int a,int b)
{
int t;
t=a;a=b;b=t;
}
void main()
{
int c[10]={1,2,3,4,5,6,7,8},i;
for(i=0;i<8;i++)
f1(c[i],c[i+1]);
for(i=0;i<8;i++)
printf("%d,",c[i]);
printf("\n");
}
A. 8,1,2,3,4,5,6,7 B. 2,1,4,3,6,5,8,7,
C. 8,7,6,5,4,3,2,1 D. 1,2,3,4,5,6,7,8
答案: D。
分析:数组元素作函数实参,是按值传递。第1次调用函数:将数组第1、第2个元素传递给形参a、b,两个形参交换数据;第2次调用函数:将数组第2、第3个元素传递给形参a、b,两个形参交换数据;……但在函数中形参值的改变并不会影响实参,所以在main()函数中输出数组的值依旧是原来的值。