关于void和return的问题。
答案:3 悬赏:0
解决时间 2021-01-22 16:23
- 提问者网友:浮克旳回音
- 2021-01-22 05:23
关于void和return的问题。
最佳答案
- 二级知识专家网友:何以畏孤独
- 2021-01-22 05:36
首先,void main 在新标准中是错误的。 main() 返回一个整型给调用它的程序。int 返回类型是可以省略的(但不建议)。
不返回值并不代表函数没用。它可以输出信息,读写文件等干很多别的事情。在 C 语言中,也可以给函数传递指针参数,让函数修改相应的内存空间数据,这样函数返回后,传入指针所指向的数据已经改变了,变相达到返回结果的目的(这在 C 中很常见)。
没有 return (但函数未声明为 void)时根据不同的系统/编译器,可能返回某些值。比如 gcc 编译器在打开 -Wall 选项时会可能警告你非 void 函数没有返回语句,因为这时函数可能返回的值是非常古怪的:
warning: control reaches end of non-void function
声明为 void 的函数也可以 return,后面不加东西,像这样:
return;
以使函数立即返回(比如函数执行出错,后面的语句不应该被执行)。
不返回值并不代表函数没用。它可以输出信息,读写文件等干很多别的事情。在 C 语言中,也可以给函数传递指针参数,让函数修改相应的内存空间数据,这样函数返回后,传入指针所指向的数据已经改变了,变相达到返回结果的目的(这在 C 中很常见)。
没有 return (但函数未声明为 void)时根据不同的系统/编译器,可能返回某些值。比如 gcc 编译器在打开 -Wall 选项时会可能警告你非 void 函数没有返回语句,因为这时函数可能返回的值是非常古怪的:
warning: control reaches end of non-void function
声明为 void 的函数也可以 return,后面不加东西,像这样:
return;
以使函数立即返回(比如函数执行出错,后面的语句不应该被执行)。
全部回答
- 1楼网友:狂恋
- 2021-01-22 07:05
这个如果说深的话就牵扯到堆栈的问题上了。。。
简单的说,就是在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而不是函数,函数只是帮助你处理数据而已。。。
简单的说,就是在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而不是函数,函数只是帮助你处理数据而已。。。
- 2楼网友:山有枢
- 2021-01-22 06:24
。。。。。。
这个你要细心的看看入门书籍。
简单来说
C语言所有过程都是函数,函数要求参数来处理,要求返回值来提供结果,在函数声明的时候,函数名前必须有一个类型来表示返回类型,如果没有返回类型,则void。
以main 为例,一般我们用void main 不需要返回值,但有些情况需要了解main的执行结果,这样就用一个int main,用一个整数来标志main返回结果。
对于规定了返回类型,即不是void的函数,必须return 一个类型合宜的值;而对于void类型的函数,你可以不return;但是这里return还有一个作用就是立即中止这个函数并返回,所以void函数可以有return,不允许的说法是错的。
这个你要细心的看看入门书籍。
简单来说
C语言所有过程都是函数,函数要求参数来处理,要求返回值来提供结果,在函数声明的时候,函数名前必须有一个类型来表示返回类型,如果没有返回类型,则void。
以main 为例,一般我们用void main 不需要返回值,但有些情况需要了解main的执行结果,这样就用一个int main,用一个整数来标志main返回结果。
对于规定了返回类型,即不是void的函数,必须return 一个类型合宜的值;而对于void类型的函数,你可以不return;但是这里return还有一个作用就是立即中止这个函数并返回,所以void函数可以有return,不允许的说法是错的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯