大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
返回值是函数的计算结果,比如用函数计算1+1返回值就是2;
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了和田免费建站欢迎大家使用!
另外返回值并不一定的我们想要的结果,比如1+1如果返回3了,那就是函数代码有错误。
这是错误,既然函数定义要返回值,就返回一个值,不返回结果是未知的 c语言可以允许这样的代码,c++视为错误
这是vc2017结果:
deubg模式结果是4,release结果是0, 所以这个代码没有意义
debug模式 结果是4
release模式 结果是0
C语言程序中,若函数无返回值,则应该对函数说明的类型是void。
如果函数所体现的计算不需要返回结果,则数据类型可以指定为void类型。
注意,这种情况下在主调函数中调用该函数,该函数调用表达式不能被用作子表达式给其他变量赋值。
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。
扩展资料
使用void类型指针要注意的几条规则:
1、void*类型只有地址信息没有类型信息,所以不能计算偏移。
C/C++中的指针通常来说有两个属性:
(1)指向变量
(2)指向对象的地址和长度
指针其实就是存储被指向变量的地址,并不保存其长度;而且存的这个地址仅是变量的首地址,并不是该变量占据内存的所有地址空间。
2、任何指针(包括函数指针)都可以赋值给void指针。
特点:
(1)不需要类型转换;
(2)只获得变量/对象地址而不获得大小。
3、void指针赋值给其他类型的指针时都要进行转换。
特点:转换类型也就是获得指向变量/对象大小。
4、void指针在强制转换成具体类型前,不能解引用。
原因:void指针只知道指向变量/对象的起始地址,而不知道指向变量/对象的大小(占几个字节)所以无法正确引用。
5、void指针不能参与指针运算,除非进行转换。
递归函数myPower的定义有逻辑错误,改成:
double myPower(int a,int b)
{
if(0==b) return 1;
return a*myPower(a,b-1);
}
如果改成这样,会更高效:
double myPower(int a,int b)
{
if(0==b) return 1;
if(1==b) return a;
return myPower(a,b%2)*myPower(a*a,b/2);
}
例子1
#include stdio.h
double myPower(int a,int b)
{
if(0==b) return 1;
return a*myPower(a,b-1);
}
int main()
{
int a=2,b;
for(b=0;b11;b++)
printf("%lf\n",myPower(a,b));
return 0;
}
例子2
#include stdio.h
double myPower(int a,int b)
{
if(0==b) return 1;
if(1==b) return a;
return myPower(a,b%2)*myPower(a*a,b/2);
}
int main()
{
int a=3,b;
for(b=0;b11;b++)
printf("%lf\n",myPower(a,b));
return 0;
}
很正常啊,没有返回值,就是不需要返回值。
比如:定义一个函数,在函数中打印信息到屏幕上。
void displayMessage(char *msg) {
#ifdef NEED_DEBUG
printf("%s\n", msg);
#endif
}
很显然,调用这个函数,我不需要知道信息是不是已经打印到屏幕上了。(只有调试程序,才需要显示信息)
有很多类似的场景,比如:某个程序,根据给定的参数,在屏幕上绘制完成一个图像,而调用者不关心图像是不是绘得正确,因为正确与否不影响程序的继续执行。
没有返回值的函数通常用来做一些数据的修改或实现些内部功能。而有返回值的函数通常作用为数据存储。当然实际上没有那么明显的界限,只是你要知道没返回值的函数一样有意义