每个函数都有且仅有一个返回值吗?没有返回值可不可以

芒果仔 2009-06-06 09:10:58
先看这样一个题目:


#include<stdio.h>
void main()
{
int add(int x,int y);
int sum,a,b;

printf("input two numbers(a and b):\n");
scanf("%d %d",&a,&b);

sum=add(a,b);;

printf("a+b=%d\n",sum);
}

int add(int x,int y)
{
int z;

z=x+y;

return (z);
}


这是很普通的情况,就是返回一个值,即z的值,而有些时候并没有返回值,但是主函数或者其它函数也能接受它的返回值,比如以下的例子:


#include<stdio.h>
void main()
{
void threeHelloworld(); /* 声明threeHelloworld函数 */
threeHelloworld(); /*调用threeHelloworld函数 */
}

void threeHelloworld() /*此函数的作用是输出三行"Hello,world!" */
{
void printHelloworld(); /* 声明printHelloworld函数 */
int i;

for (i=0;i<=2;i++)
printHelloworld();
}

void printHelloworld()
{
printf("Hello,world!\n");
}


在threeHelloworld函数和printHelloworld函数当中都没有返回值,主要是threeHelloworld函数,我不明白的是它是在循环一次,返回一次值(也就是调用三次),还是三次循环结束了,将三行的“Hello,world!”作为一个返回值一起带回主函数,
请高人解答,谢谢!
...全文
688 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
芒果仔 2009-06-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jieapple 的回复:]
oh,my girl!
呵呵,void类型定义的函数 当然没有返回值。
在其它函数 或者 主函数 调用这个函数的时候,每调用一次函数就执行一次。
因为

C/C++ code
void printHelloworld()
{
printf("Hello,world!\n");
}



这个函数就是输出 Hello,world! 所以调用一次这个函数就输出一次 Hello,world!当然这不是返回值是函数的输出
明白?
[/Quote]

我想我明白了,多谢~~

也多谢其他版友的帮忙,谢谢啦
ameyume 2009-06-06
  • 打赏
  • 举报
回复

for (i=0;i<=2;i++)
{
printHelloworld();
}

加上括号,楼主看的能明白些,就是调用三次printHelloworld(),每次都输出一个hello world。
ameyume 2009-06-06
  • 打赏
  • 举报
回复
debug跟踪一下就知道了
每调用一次printHelloworld()函数,就输出一次hello world,不是返回值,是函数的输出值。
jieapple 2009-06-06
  • 打赏
  • 举报
回复
oh,my girl!
呵呵,void类型定义的函数 当然没有返回值。
在其它函数 或者 主函数 调用这个函数的时候,每调用一次函数就执行一次。
因为

void printHelloworld()
{
printf("Hello,world!\n");
}

这个函数就是输出 Hello,world! 所以调用一次这个函数就输出一次 Hello,world!当然这不是返回值是函数的输出
明白?
「已注销」 2009-06-06
  • 打赏
  • 举报
回复
其实函数调用就是汇编里的一句jmp指令
「已注销」 2009-06-06
  • 打赏
  • 举报
回复
我不明白的是它是在循环一次,返回一次值
----
就是这样!

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧