C++中return一个void函数,是什么意思

比如说:voidb(){}voida(){returnb();}是不是把原本的a函数关闭,然后运行b函数?... 比如说:
void b()
{}
void a()
{
return b();

}
是不是把原本的a函数关闭,然后运行b函数?
展开
 我来答
我是一个小菜鸡
推荐于2018-03-22 · 我其实就是一只小菜鸡
我是一个小菜鸡
采纳数:651 获赞数:55224

向TA提问 私信TA
展开全部
  void的含义

  void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。

  void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:

  void a;

  这行语句编译时会出错,提示“illegal use of type 'void'”。不过,即使void a的编译不会出错,它也没有任何实际意义。

  void真正发挥的作用在于:

  (1) 对函数返回的限定;

  (2) 对函数参数的限定。

  众所周知,如果指针p1和p2的类型相同,那么我们可以直接在p1和p2间互相赋值;如果p1和p2指向不同的数据类型,则必须使用强制类型转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。

  例如:

  float *p1;

  int *p2;

  1 = p2;

  其中p1 = p2语句会编译出错,提示“'=' : cannot convert from 'int *' to 'float *'”,必须改为:

  1 = (float *)p2;

  而void *则不同,任何类型的指针都可以直接赋值给它,无需进行强制类型转换:

  void *p1;

  int *p2;

  1 = p2;

  但这并不意味着,void *也可以无需强制类型转换地赋给其它类型的指针。因为“无类型”可以包容“有类型”,而“有类型”则不能包容“无类型”。道理很简单,我们可以说“男人和女人都是人”,但不能说“人是男人”或者“人是女人”。下面的语句编译出错:

  void *p1;

  int *p2;

  2 = p1;

  提示“'=' : cannot convert from 'void *' to 'int *'”。
zcy990718
2013-06-14 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.2万
采纳率:66%
帮助的人:1653万
展开全部
这应定以a函数,编译器编译都无法通过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
终乃051
推荐于2016-08-07
知道答主
回答量:26
采纳率:0%
帮助的人:22.4万
展开全部
void函数的返回值为空
对于void函数,即使加上了return语句,返回值仍然是空
函数关闭是在反括号处,而不是return语句之前,整个一对大括号内的区域都是函数体

return b();这句是在a的函数体内的,肯定在函数a()关闭之前执行.你可以对比一下,如果声明了变量i,return i这句中含有i.如果在return时函数a()已经关闭的话,变量i就无法寻址了.

如果想完全弄清楚这些问题,推荐你看一下<编译原理>这本书
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e7ebc6a
2013-06-14 · TA获得超过215个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:270万
展开全部
就是a调用了b函数,b必须运行结束后,a才可以结束
和void a()
{
b();
}
等价
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式