返回值是函数的计算结果,比如用函数计算1+1返回值就是2;
目前成都创新互联公司已为近千家的企业提供了网站建设、域名、网站空间、网站托管维护、企业网站设计、平遥网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
另外返回值并不一定的我们想要的结果,比如1+1如果返回3了,那就是函数代码有错误。
如果一个函数没有返回值,一般情况下是需要加入return语句的,但是如果你需要在某些情况下不完全将函数执行完毕,就可以加上return语句来提前返回,这时候加上“return;”return是C语言中的一个关键字,意为返回。
如果被调用的函数中没有return语句,并不带回一个确定的,用户希望得到的函数值,但实际上,函数并不是不带回值,而只是不带回有用的值,带回的是一个不确定的值。
为了明确表示“不带回值”。可以用“void”定义“无类型”(或称“空类型”)。这样系统就保证不使函数带回任何值,即禁止在调用函数中使用被调用函数的返回值。
为使程序减少出错,保证正确调用,凡不要求带回函数值的函数,一般定义为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;
}
C语言中,如果要函数不返回值,则应该吧函数的类型定义为“void”。
在将函数定义为void类型的情况下在主调函数中调用该函数,该函数调用表达式不能被用作子表达式给其他变量赋值。
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。
扩展资料:
void类型指针要注意规则:
1、void 指针是一种特殊的指针,表示为“无类型指针”,在 ANSI C 中使用它来代替“char*”作为通用指针的类型。由于 void 指针没有特定的类型,因此它可以指向任何类型的数据。
2、void*类型只有地址信息没有类型信息,所以不能计算偏移。
3、要将void指针赋值给其他类型的指针,必须进行强制类型转换。
4、在编程中,如果函数的参数可以是任意类型指针,那么应该使用 void 指针作为函数的形参,这样函数就可以接受任意数据类型的指针作为参数。
void使用注意:
1、如果函数没有返回值,那么应声明为void类型,在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但是许多程序员却误以为其为void类型。
2、如果函数无参数,那么应声明其参数为void。
3、void不能代表一个真实的变量
参考资料来源:百度百科-void
无返回值就是函数只执行数据处理,不返回值。函数定义时一般用void关键字表示无返回值。
如调用string类库中的int
i
=
strcmp("abc",
"abc")函数判断两个参数是不是相等,两个都"abc"
则i
=
0,这是有返回值的
很正常啊,没有返回值,就是不需要返回值。
比如:定义一个函数,在函数中打印信息到屏幕上。
void displayMessage(char *msg) {
#ifdef NEED_DEBUG
printf("%s\n", msg);
#endif
}
很显然,调用这个函数,我不需要知道信息是不是已经打印到屏幕上了。(只有调试程序,才需要显示信息)
有很多类似的场景,比如:某个程序,根据给定的参数,在屏幕上绘制完成一个图像,而调用者不关心图像是不是绘得正确,因为正确与否不影响程序的继续执行。