标题:[求助]函数调用中实参代替形参的问题
只看楼主
asxiaofuchao
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-7-23
 问题点数:0 回复次数:1 
[求助]函数调用中实参代替形参的问题
  老师讲课的时候硕果函数调用的实质是实参代替形参的过程,但我就不明白实参是怎样代替形参的.麻烦高人们帮我解答下.
  下面有个选择题,我不知道怎么做.
    

  以下程序中函数sort的功能是对所指数组中的数据进行由大到小的排序:
   void sort (int a[],int n)
{ int i,j,t;
for (i=0;j<n;j++)
for (j=i+1;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t}
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for (i=0;i<10;i++) printf("%d,",aa[i]);
printf("\n");
}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,10,
B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7,6,5,4,9,10,
D)1,2,10,9,8,7,6,5,4,3,
搜索更多相关主题的帖子: 形参 函数 代替 
2007-07-24 16:23
anlogo
Rank: 2
等 级:论坛游民
威 望:1
帖 子:293
专家分:20
注 册:2007-7-20
得分:0 
程序本身有问题,改了一下
void sort (int a[],int n)
{ int i,j,t;
for (i=0;i<n;i++)
for (j=i+1;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for (i=0;i<10;i++) printf("%d,",aa[i]);
printf("\n");
}
输出1 2 3 8 7 6 5 4 9 10

aa 代表该数组的地址,即&aa[0]
&aa[3]即aa[3]的地址
函数sort(int a[],int n)
实际上就是sort(int *a,int n)
第一个参数需要传递地址,而第二个参数则需要传递数值
这里a[]数组跟aa[]数组是同一个数组
2007-07-24 17:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-157755-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.289953 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved