| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 541 人关注过本帖
标题:请教一个函数的问题
只看楼主 加入收藏
隐君子
Rank: 1
等 级:新手上路
帖 子:46
专家分:1
注 册:2011-12-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
请教一个函数的问题
程序代码:
#include<stdio.h>
void main()
{
    int age(int n);
    printf("第五个学生年龄是:%d岁。\n",age(5));
}
int age(int n)
{
   int c;
   if(n==1)
   c=10;
   else
   c=age(n-1)+2;
   return(c);
}
在“printf("第五个学生年龄是:%d岁。\n",age(5));”里的age(5)是什么意思?其作用是什么?
在age函数体里n的初值是什么?为什么?
2012-05-12 20:03
阿的个发
Rank: 1
等 级:新手上路
帖 子:5
专家分:6
注 册:2012-5-12
收藏
得分:4 
age(5)就是调用age函数 其中的5是参数
2012-05-12 20:09
星海浮沉
Rank: 2
等 级:论坛游民
帖 子:20
专家分:28
注 册:2012-5-3
收藏
得分:4 
我给具体解释下:如SL所说,在程序运行时,在main函数中调用age函数,其参数为5,故递归调用age函数多次,最终得出age(5)的值并返还给main函数,最后输出!
2012-05-12 21:02
隐君子
Rank: 1
等 级:新手上路
帖 子:46
专家分:1
注 册:2011-12-7
收藏
得分:0 
这个5就是调用5次的意思吗?还是没明确指定多少次,只是在输出时调用age(5)的值?
2012-05-12 21:22
星海浮沉
Rank: 2
等 级:论坛游民
帖 子:20
专家分:28
注 册:2012-5-3
收藏
得分:0 
嗯,n!=1,所以age(5)=age(4)+2,又age(4)=age(3)+2,直至age(2)=age(1)+2,而age(1)=10!
2012-05-12 21:54
a7882669
Rank: 4
等 级:业余侠客
帖 子:192
专家分:290
注 册:2012-4-17
收藏
得分:4 
回复 4楼 隐君子
5只是它的形参
2012-05-12 23:04
qiongyepiaol
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2012-5-13
收藏
得分:4 
5表示运算age(n)时,n=5,执行age(int n)时,相当于一个循环语句,每次n-1,且c值相应增加,直到n=1,此时age(n)值就是返回值c,得结果输出。不知道对不对。
2012-05-13 01:22
隐君子
Rank: 1
等 级:新手上路
帖 子:46
专家分:1
注 册:2011-12-7
收藏
得分:0 
回复 6楼 a7882669
5是形参,在调用age是把它传给实参,实参n得到值就是5,对吗?
2012-05-13 01:33
nextleave
Rank: 2
等 级:论坛游民
帖 子:52
专家分:92
注 册:2011-9-12
收藏
得分:4 
回复 8楼 隐君子
n是形参,5是实参。其实n可以理解为一个指针,只是指向一个地址。主函数把实参5写入这个地址然后调用这个函数。函数体的语句就通过访问该指针来对这个地址中的实参也就是5进行操作。这就是5是实参,n是形参这件事的实质。对这个地址中的实参5的操作不会影响到主函数中原来n的值。因为主函数只是把该值拷备到了n所指向的地址。如果想在子函数中改变主函数中变量的值,就要用指针做参数了。
2012-05-13 06:32
快速回复:请教一个函数的问题
数据加载中...
 
   



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

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