有以下程序:void swap1(intc0[],intc1[]){ intt;t=c0[0];c0[0]=c1[0];c1[0]=t;}void swap2(int*c0,int*c1){ int t;t=*c0;*c0=*c1;*c1=t;}main(){inta[2]={3,5},b[2]={3,5};swap1(a,a+1);swap2(&b[0],&b[1]);printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);}程序运行后的输出结果是______。
A.3 5 5 3
B.5 3 3 5
C.3 5 3 5
D.5 3 5 3
参考答案:D
解析:函数 swap1、swap2 的作用均为交换两个数。主调函数“swap1(a,a+1)”使得数组 a 的首地址赋给形参 c0[],使得 c0 指向 a[0]所在的存储单元,a[1]的地址赋给形参 c1[],使得 c1 指向 a[1]所在的存储单元, 故交换 c0[0]与 c1[0]后,a[0]与 a[1]值也发生了变化;主调函数“swap2(&b[0],&b[1]);”起着同样的作用, 使得指针变量 c0 指向了 b[0]存储单元,c1 指向了 b[1]存储单元,并在 swap2 函数中发生了交换,所以 b[0]、 b[1]的值也发生变化,故本程序输出的结果是 5353。