注意两个【规则】:
专注于为中小企业提供做网站、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业莫力达免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
一、不要省略返回值的类型。如果函数没有返回值,应生明为void类型。
二、函数名字与返回值类型在语义上不可冲突。
eg:char c;
c=getchar();
if(c==EOF)
..................
此处getchar()是一个函数,它的返回值类型却不是char,而是int类型。起函数原型是:
int getchar(void);由于c是char类型,取值范围是【-128,,127】,万一宏EOF的值在char的 取值范围之外,那么if语句将总是失败。
【建议】
不要将正常值和错误标志混在一起返回。建议正常值用输出参数获得,而错误标志用return语句返回。
两个【提示】:
一、有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。
例如字符串拷贝函数strcpy的原型:char *strcpy(char *strDest,const *strSrc);
strcpy 函数将strSrc拷贝至输出参数strDest中,同时函数的返回值又是strDest。这样做并非多此一举。这样做并非多此一举,可以获得如下灵活性:
char str[20];
int length = strlen(strcpy(str,"hello world"));
但是注意不要将返回指针的函数作为左值,例如:
double* func(double* p)
{
return p;
}
double d = 100;
*func(d)=200;
二、如果函数的返回值是一个对象,有些场合用“返回引用”替换“返回对象值”,这样可以提高效率,而且还可以支持链式表达。而有些场合只能用“返回对象值”而不能用“返回引用”,否则会出错。
楼主顺便给你推荐两本书:高质量c/c++编程和c语言深度剖析。
首先比喻下函数是什么吧?
函数简单的说就是一个黑箱子似的制造机器,你给他原料(输入参数)它给你制造出产品(函数返回的结果)。
所以函数的返回值一般就是你想要的结果。当然有些函数没有返回值,比如输出一句话的函数,这函数就没有返回值。C++用VOID型表示。但是求两个数的最大值函数INT MAX(INT A, INT B)的返回值就可以是你求的最大的值。
int max(int a, intb)
{
if(ab)
{
return a;
}
else
{
return b;
}
}
其中return返回的值就是函数的返回值。
#include stdio.h
int Allfactors(int n)
{
int i;
for(i=1;i=n;i++)
{
if(n%i==0)
printf("%d\t",i);
}
printf("\n");
return i;
}//这里定义了一个求某整数所有约数的函数 应该没错 单独运行可以输出//
void main()
{
int a;
printf("Please input an int:\n");
scanf("%d",a);
printf("Your int is:\n");
int n;
n=Allfactors(a);//从这里开始不会了 我想调用这个输出约数的函数 应该怎么写啊 这么写不对 //
printf("the factors of your number are:%d\n",n);
}
试试这个?
fun(int n,int *s)
{ int f1,f2;
if(n==1||n==2) *s=1;
else
(1)[ { fun(n-1,f1);
fun(n-2,f2);
*s=f1+f2;
} ] (1)[...]这部分看不明白,请帮忙解释一下. fun是函数的入口 这里面其实相当于循环
}
当(n==1||n==2)不成立的时候
执行函数调用 并传值 简单的理解就是 一行一行代码 读
(程序只能这样)函数调用也好什么也好都是起到跳转语句的作用