一直对有返回值函数和没有返回值函数,闹不明白

fcly1981826ly 2011-08-28 07:04:53
求大牛解释

有返回值函数和没有返回值函数什么区别


谢谢
...全文
11536 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
想飞的雷震子 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pathuang68 的回复:]
参考这篇文章吧:
关于函数返回值的几种情况
[/Quote]
大哥,你都是引用的你自己的博客啊
天外来客-007 2011-09-13
  • 打赏
  • 举报
回复
基本定义如果不明白,可以看书,至于什么时候需要返回值,需要根据具体情况来定!
AndyZhang 2011-09-13
  • 打赏
  • 举报
回复
这个问题就是根据自己的需要吧
fcly1981826ly 2011-09-13
  • 打赏
  • 举报
回复
学习,,,,,谢谢
Qlaiaqu 2011-09-13
  • 打赏
  • 举报
回复
在于你关不关心结果
hongwenjun 2011-09-13
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
void mystrcpy(char* dst, const char* src)
{
while (*dst++ = *src++) ; // 不用返回值
}

int main()
{
char str[100];
printf("%s\n", strcpy(str, "Hello world!"));

printf("%s\n", mystrcpy(str, "不用返回值,串接一起就会错误"));
return 0;
}

//char *strcpy( char *to, const char *from );
//功能:复制字符串from 中的字符到字符串to,包括空值结束符。返回值为指针to。

// 因为 strcpy ,可以如上面把函数串接起来,如果strcpy 没法返回值,这样串接就会错误
hongwenjun 2011-09-13
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
printf("%s\n", strcpy(str, "Hello world!"));
return 0;
}

//char *strcpy( char *to, const char *from );
//功能:复制字符串from 中的字符到字符串to,包括空值结束符。返回值为指针to。

// 因为 strcpy ,可以如上面把函数串接起来,如果strcpy 没法返回值,这样串接就会错误
chen16501560 2011-09-13
  • 打赏
  • 举报
回复
。。。。。。。
陌路流離 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 worldy 的回复:]

引用楼主 fcly1981826ly 的回复:
求大牛解释

有返回值函数和没有返回值函数什么区别


谢谢


有返回值:函数执行结束,必须将执行的某个结果数据返回给调用者
没有返回值:函数执行结束,没有返回任何结果给调用者
[/Quote]
++
这个问题要回答起来还真有点不知道怎么说
sanae 2011-09-06
  • 打赏
  • 举报
回复
x86的C的常见实现上,保存返回值的容器是存在的,但是可以保存不是返回值的值。
这个意义上有返回值和无返回值函数的区别是取这个容器当作返回值还是忽略这个容器的值。
worldy 2011-09-06
  • 打赏
  • 举报
回复
没有返回值:比如,你打印一个字符到显示器,只是一个操作,结果是在显示器上显示了字符,关心的是一个操作
有返回值:比如 a=max(3,5)取最大值,max将最终数据5返回,并且赋值给变量a,关心的是数据

有返回值得经常可以作为无返回值来使用,比如API 的TextOut,该函数由返回值,但是,你可以忽略之
无返回值的,则不能作为有返回值使用
worldy 2011-09-06
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 pochioly 的回复:]
x86的C的常见实现上,保存返回值的容器是存在的,但是可以保存不是返回值的值。
这个意义上有返回值和无返回值函数的区别是取这个容器当作返回值还是忽略这个容器的值。
[/Quote]

这个说法不对,有返回值,会将返回的数据压入栈,调用者,要在取栈值后,清除栈;没有返回值,就不需要这个操作。
Ionstorm2 2011-08-30
  • 打赏
  • 举报
回复
有返回值说明必须有结果(值)返回,没有返回值就是不需要返回任何东西,只是单纯在函数里面做处理
举个例子,你写个求int型数字最大值的函数Max(a,b),要求有返回值,那么就声明成int Max(a,b),在函数体里面写怎么取得a,b两者最大值的过程,然后return 比较大的那个值,之后你调用Max(a,b)的时候,因为有返回值,可以直接有输出,比如cout<<Max(a,b)<<endl;如果你声明成无返回值的函数,即void Max(a,b),那么你cout<<Max(a,b)<<endl;是没有结果输出的

另外就是,有返回值,可以根据函数处理的情况来定位程序在哪里
kkrmr 2011-08-30
  • 打赏
  • 举报
回复
有返回值的话函数执行结束,会得到某一执行结果,该执行结果可能会再其他地方用到的
没有返回值的话,函数执行结束,不会产生执行结果
赵4老师 2011-08-30
  • 打赏
  • 举报
回复
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
tom__code 2011-08-29
  • 打赏
  • 举报
回复
有返回值:函数执行结束,必须将执行的某个结果数据返回给调用者
没有返回值:函数执行结束,没有返回任何结果给调用者
k20220630 2011-08-29
  • 打赏
  • 举报
回复
建议《算法导论》吧
如果你是搞竞赛的也可以看看《算法艺术与计算机竞赛》
压力山大啊
k20220630 2011-08-29
  • 打赏
  • 举报
回复
个人认为有没有返回值对程序整体不太重要,
如果需要函数运行完毕传递数值的话完全可以把变量定义成全局的:
int a,b;
void fun()
{
ifstream fin("...");
ofstream fout("...");
fin>>b;
a=b;
}
int main(void)
{
fun();
return 0;
}



int fun()
{
ifstream fin("...");
ofstream fout("...");
fin>>b;
return b;
}
int main(void)
{
int a;
a=fun();
return 0;
}
在原理上是一样的
关键是老师说:“有返回值的函数用起来会更方便”
表示压力山大
fcly1981826ly 2011-08-29
  • 打赏
  • 举报
回复
看哪本书可以把这个问题搞清楚呢?
fcly1981826ly 2011-08-29
  • 打赏
  • 举报
回复
麻烦各位大牛,

举点最简单的列子,


万分感谢!
加载更多回复(24)

64,666

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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