C++中return一个void函数,是什么意思
比如说:voidb(){}voida(){returnb();}是不是把原本的a函数关闭,然后运行b函数?...
比如说:
void b()
{}
void a()
{
return b();
}
是不是把原本的a函数关闭,然后运行b函数? 展开
void b()
{}
void a()
{
return b();
}
是不是把原本的a函数关闭,然后运行b函数? 展开
展开全部
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 *'”。
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 *'”。
展开全部
这应定以a函数,编译器编译都无法通过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void函数的返回值为空
对于void函数,即使加上了return语句,返回值仍然是空
函数关闭是在反括号处,而不是return语句之前,整个一对大括号内的区域都是函数体
return b();这句是在a的函数体内的,肯定在函数a()关闭之前执行.你可以对比一下,如果声明了变量i,return i这句中含有i.如果在return时函数a()已经关闭的话,变量i就无法寻址了.
如果想完全弄清楚这些问题,推荐你看一下<编译原理>这本书
对于void函数,即使加上了return语句,返回值仍然是空
函数关闭是在反括号处,而不是return语句之前,整个一对大括号内的区域都是函数体
return b();这句是在a的函数体内的,肯定在函数a()关闭之前执行.你可以对比一下,如果声明了变量i,return i这句中含有i.如果在return时函数a()已经关闭的话,变量i就无法寻址了.
如果想完全弄清楚这些问题,推荐你看一下<编译原理>这本书
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是a调用了b函数,b必须运行结束后,a才可以结束
和void a()
{
b();
}
等价
和void a()
{
b();
}
等价
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询