关于void和return的问题。
发布网友
发布时间:2022-05-02 18:36
我来回答
共3个回答
热心网友
时间:2022-06-21 06:28
首先,void main 在新标准中是错误的。 main() 返回一个整型给调用它的程序。int 返回类型是可以省略的(但不建议)。
不返回值并不代表函数没用。它可以输出信息,读写文件等干很多别的事情。在 C 语言中,也可以给函数传递指针参数,让函数修改相应的内存空间数据,这样函数返回后,传入指针所指向的数据已经改变了,变相达到返回结果的目的(这在 C 中很常见)。
没有 return (但函数未声明为 void)时根据不同的系统/编译器,可能返回某些值。比如 gcc 编译器在打开 -Wall 选项时会可能警告你非 void 函数没有返回语句,因为这时函数可能返回的值是非常古怪的:
warning: control reaches end of non-void function
声明为 void 的函数也可以 return,后面不加东西,像这样:
return;
以使函数立即返回(比如函数执行出错,后面的语句不应该被执行)。
热心网友
时间:2022-06-21 06:29
。。。。。。
这个你要细心的看看入门书籍。
简单来说
C语言所有过程都是函数,函数要求参数来处理,要求返回值来提供结果,在函数声明的时候,函数名前必须有一个类型来表示返回类型,如果没有返回类型,则void。
以main 为例,一般我们用void main 不需要返回值,但有些情况需要了解main的执行结果,这样就用一个int main,用一个整数来标志main返回结果。
对于规定了返回类型,即不是void的函数,必须return 一个类型合宜的值;而对于void类型的函数,你可以不return;但是这里return还有一个作用就是立即中止这个函数并返回,所以void函数可以有return,不允许的说法是错的。
热心网友
时间:2022-06-21 06:29
这个如果说深的话就牵扯到堆栈的问题上了。。。
简单的说,就是在main函数里调用函数的时候会有区别,举个例子:
int demo()
{
int a = 1;
return a;
}
void etc(int a)
{
a = a + 1;
}
void main()
{
int b = demo();//这里给b赋值,可以设想要是demo函数没有返回值的话,这条语句就是错误的。
etc(b);
cout<<b;//这里输出的就是2了
}
主函数输不输出是看你的main里面的cout/printf而不是函数,函数只是帮助你处理数据而已。。。