全部问题 > 当前问题

地址传递和按值传递的区别

七七 2016-3-24 13:15:35

共 2 个回答

矜持不失淡雅的少年、 2016-3-24 14:28:39

型参不是地址和指针的都是按值传递

初一 2016-3-24 15:35:02

就你这道题来说把   实参 k  数组名代表首元素地址  所以是地址传递   5 不用说肯定是按值传递

问题来自: 数组和函数
有以下程序
#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。