地址传递和按值传递的区别
有以下程序
#include <stdio.h>
void fun(int a[],int n)
{ int i,t;
for(i=0;i<n/2;i++) {t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t;}
}
main()
{ int k[10]={1,2,3,4,5,6,7,8,9,10},i;
fun(k,5);
for(i=2;i<8;i++) printf("%d",k[i]);
printf("\n");
}
程序的运行结果是 ______ 。
A. 345678
B. 876543
C. 1098765
D. 321678
答案:D
解析:从调用函数fun(k,5)可以看出是地址传递,形参可以改变实参。n=5,所以i从0循环到1。i=0时,交换a[0]和a[4]。i=1时,交换a[1]和a[3]。交换后的数组为:5,4,3,2,1,6,7,8,9,10。因此选D。