return
创新互联建站专注于企业成都营销网站建设、网站重做改版、曲松网站定制设计、自适应品牌网站建设、H5高端网站建设、商城网站制作、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为曲松等各大城市提供网站开发制作服务。
表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。
return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。
如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
return语句后面具体是什么内容,这就要具体情况具体分析了:
(1)
在返回类型是char的函数中,return后应该是char类型的值;
(2)
在返回类型是int的函数中,如果是要停止函数的调用,最好应该为0;其他的按照你的目的而定,只要是int
类型就行了
(3)
在返回类型是结构类型的函数中,return后应该是结构的一个实例对象。
总之,函数定义为什么样的返回类型,该函数中return后就应该是相应类型的值。
当n==1时就返回了, 虽然没有显式地写return
if(n==1) 成立时执行printf语句, 执行完后遇到move函数的右 } 就返回了.
...
从汇编的角度来说,函数
返回值
,其实就是函数返回后,cpu中eax的值。在C语言等语方中,在函数中写了返回语句,那么函数在返回时,就会对eax作最后赋值。
int
find(int
a,int
b)
{
if(b=0)
return
100;
else
find(--a,--b);/这里为什么不用返回值?/
}
//为什么不用返回值呢,因为此程序进行递归后,在最初返回时,eax的值被赋值为100,而之后的回溯过程中,程序并没有修改eax的值,所以到最后,返回值还是100。
这种写法是会出问题的。应写成。
int
find(int
a,int
b)
{
if(b=0)
return
100;
else
return
find(--a,--b);
}
为什么了修改之后就出错呢,如以上所说,这很好理解,因为程序最后调用了printf()。eax中的值是printf()的返回值。若把他当成find()的返回值自然是出错了。
int hehe(int n) {
if(n=1) return 1;
return n * hehe(n-1);
}
我们一点一点来看:
首先 n = 0 传入,if条件满足 返回 hehe(0) = 1
在传入 n = 1, if条件还是满足 返回 hehe(1) = 1
我们传入参数 n = 2, if 条件不满足 hehe(2) = 2 * hehe( 2 - 1 )= 2 * 1
在我们传入 n =3 , if条件不满足 hehe(3) = 3 * hehe(2) == 3 * 2 * 1
你继续这个步骤 ,对任何正整数n
hehe(n) = n * hehe(n-1) = n * (n-1) * ......* 1
明白了吗?!