【发布时间】:2021-10-18 17:42:25
【问题描述】:
经过一番研究,由于 K & R 的“C 编程语言”第 1.7 章中的例子不是很清楚,我了解到return 通常出现在每个函数的末尾,标志着它的结束;
貌似默认情况下return的值是0,表示函数执行成功(究竟是什么意思?)。
如果我们将 return 的值设置为我们调用的变量会发生什么?
例如,如果我要写:
return p;
这是否意味着函数的最终值将是p?
例如,如果我从main() 或其他函数调用此函数,则此函数在main() 中的值是否为p?
例子:
#include <stdio.h>
int power(int m, int n);
/* test power function */
int main(){
int i;
for(i = 0; i < 10; ++i)
printf("%d %2d %3d", i, power(2,i), power(-3,i));
return 0;
}
int power(int base, int n)
{
int i, p;
p=1;
for(i=1;i<=n;++i)
p=p*base;
return p;
}
这是否意味着当我在 main 中调用 power() 时,它的值是 p?
【问题讨论】:
-
你有没有尝试编译代码看看会发生什么?
-
我认为你很困惑,因为
main函数的规则与其他所有函数不同。因此,当您阅读该部分时,需要注意将讨论main的段落与讨论其他功能的段落分开。比如语句“好像默认情况下return的值为0” 只适用于main。其他任何功能都不是这样。 -
返回的不是变量p。它是 p 持有的值的副本。 p 是一个局部变量,所以它在重新上电后就消失了。
-
是的,事情就是这样,有几个元素我不清楚,所以是的@klutt,我尝试了代码,但我不明白它是怎么做的,我做了一些尝试用更简单的方法模拟它,但我失败了,所以我不明白它是如何工作的。我还认为参数是本地的,它们的名称是纯粹形式的,所以我不能翻译成一种人类语言,比如说
p = p * base,我的意思是,base 应该在那里的值是多少?这本书没有明确地说,我不能肯定地假设,因为它很清楚 -
参数
n也是如此,我会说它是不确定的,所以它是一个巨大的数字,但我不敢假设它,毕竟我只是初学者,所以我认为,应该说清楚。