return返回一个数值的意思就是把return <表达式>后面表达式的值返回给调用他的函数。举个例子:
int sum(int i,int j)
{
return i+j;
printf ("这个语句不会被执行,因为该子函数执行到上面的return语句就无条件结束了");
}
main()
{
int a=10,b=11,c;
c=sum(a,b);
printf("%d",c);
}
程序的输出为:
21
这个21从何而来呢main函数调用sum(a,b)函数时将a的值赋给i,b的值赋给j,上面说了return i+j;会计算i+j的值也就是结果等于21,并将21带回给调用它的函数,即c=sum(a,b);相当于c=21,这个21 就是由sum(a,b)中的return反回来的。
main 主函数的 return 值,并不是告诉编译器的,而是返回到运行这个程序的系统的。
命令解释器(例如dos的command,linux 的各种 Shell)接收这个值,可以用于不同程序之间的交互。例如批处理程序(又或者另外一个程序通过管道什么的)要连续执行多个程序,如果后一个程序是否执行依赖于前一个程序是否执行成功的时候,就要知道前一个程序的运行状态。
具体举例,你要写一个安装程序安装你的某个程序,但这个程序运行或者安装依赖于另外一个程序是否安装成功了(很常见吧,象现在很多程序要求你安装了dotnet xxx版本后才能运行之类)。你自己封装的安装程序启动后先检查依赖环境是否安装了,没有,调动依赖环境的安装程序,这时候要检查这个安装程序是否正常安装完成正常退出,就要检查这个返回值了。如果返回安装失败,就不再执行后面的程序。成功了,继续安装你的程序。
至于返回什么这是写代码的人自己决定的,就算你喜欢返回0XAA55代表正常退出也行。只是一贯以来,大家都接受 main return 0表示成功,因为返回非0值可以用不同的值分别表示不同的错误原因。什么内存不足,文件校验错之类的可以分别定义不同的值,带回更多信息。而系统自己也会将0作为正常。没错,系统也会接收程序的return 值的,windows7就经常在安装某个文件异常退出时冒个提示什么这程序好像没有正常安装之类的信息。
就算你强行写 void main() 然后不return ,其实也是有个默认值返回了出来。就算你不在乎这个值,还是 int main 然后 return 个0 这样的行为比较标准。一些严格的编译器,是不接受 void main 的。例如 xcode 。
return 表示结束当前函数并返回值,如果没定义,则返回 null
如 return 1; 表示返回1
return; 表示返回 null
这里我给你一个简单的c程序的例子。
int main()
{
int a=3,b=2;
return (a+b);
}
因为在主函数的前面定义了一个int类型的数值,这个数据类型正反应了return要返回的数据类型。通过return,可以让你对你所关心的数据被另外一个函数来调用。这要在你充分理解的c语言的模块化的编程理念之后才会有更深刻的理解。
当然下面的操作也是正确的。
void main()
{
int a=3,b=2;
printf("%d",a+b);
return;
}
在函数返回类型为void时,即不需要返回任何值,
要想结束函数就用
return;
它表示函数执行到这一句时终止函数