全部问题 > 当前问题

问题

 t=a; a=b; b=t;

这里不是c[i],c[i+1]的值相互替换了吗?为什么不选B


漫天小雨 2016-3-20 10:06:57

共 2 个回答

最佳答案

Nope 2016-3-20 10:12:06

这里是把实参的值赋给形参,无论形参怎么变化,都是实参向形参的单向传递,没有用到地址指针时,都无法改变。

嘿嘿大人 2016-3-23 13:22:32

这是按值传递,在按值传递的时候,形参的变化是无法带给形参变化的

问题来自: 数组和函数
有以下程序
#include <stdio.h>
void fun(int a, int b)
{ int t;
  t=a; a=b; b=t;
}
main()
{ int c[10]={1,2,3,4,5,6,7,8,9,0}, i;
  for(i=0;i<10;i+=2) fun(c[i],c[i+1]);
  for(i=0;i<10;i++) printf("%d,",c[i]);
  printf("\n");
}
程序的运行结果是 ______ 。
A. 1,2,3,4,5,6,7,8,9,0,
B. 2,1,4,3,6,5,8,7,0,9,
C. 0,9,8,7,6,5,4,3,2,1,
D. 0,1,2,3,4,5,6,7,8,9,
答案:A
解析:这个函数是按值传递,按值传递的特点就是形参无论怎么改变都不会影响到实参,加上这个函数又是个无返回值的函数,也没有全局变量,所以可以忽略这个函数将其等价为 #include <stdio.h> main() { int c[10]={1,2,3,4,5,6,7,8,9,0}, i; for(i=0;i<10;i++) printf("%d,",c[i]); printf("\n"); }所以这个函数输出就是1234567890