一个C语言的问题,大家帮帮忙啊

来源:百度知道 编辑:UC知道 时间:2024/05/26 18:25:26
本人刚学到函数,就有一个函数返回值的问题不太理解,程序如下:
main()
{
int i;
scanf("%d",&i);
cube(i);
}
cube(x)
int x;
{
int cb;
cb=x*x*x;
printf("cube=%d\n",cb);
}
书上说除了void之外,所有函数都有一个返回值,这个值由return语句返回,如果无return语句返回0;我对这句话有点疑惑,上面这个程序没有return语句,那么调用函数的时候岂不是把0返回给了主函数啊,那样的话上面书上的程序就不对了啊?请大家解释一下,谢谢.

是把0返回了主函数。在C语言中的函数调用有两种。一是返回值调用,另一个是语句调用。返回值调用的目地是获得一个经过运算后结果。语句调用是为了实现某种功能。
你写的那个就是语句调用。功能是在屏幕上显运算结果,执行后在屏幕上显运算结果,你的目地也就达到了。当然在它也会产生0这个返回值,但你在主函数中没有定义一个变量(如 m=cube(i);中的m)来接收它,所以虽然返回了但无效。

0返回给了主函数,但printf("cube=%d\n",cb); 这句是个显示的结果,并不是显示函数值,函数值多少无所谓,因为你不是调用函数

main()
{
int i;
scanf("%d",&i);
cube(i);
}
cube(int x){
int cb;
cb=x*x*x;
printf("cube=%d\n",cb);
}

你在试一下,不行的话给我QQ442853042

main()
{
int i;
scanf("%d",&i);
int ret=cube(i);
printf("return value is %d",ret);//输出返回值
}
cube(int x){
int cb;
cb=x*x*x;
printf("cube=%d\n",cb);
}