函数是用户与程序的接口,在定义一个函数前,首先要清楚以下三个问题。1) 函数的功能实现及算法选择。算法选择会在后续文章详细讲解,本节重点关注函数的功能实现。一般选取能体现函数功能的函数名,且见名知意,如求和函数的函数名可取为 add,求最大值的函数名可取为 max,排序函数可取名为 sort 等。2) 需要用户传给该函数哪些参数、什么类型,即函数参数。3) 函数执行完后返回给调用者的参数及类型,即函数返回值类型。 函教定义格式 函数定义的一般格式为: 返回类型 函数名 (类型参数1,类型参数2,…) {函数体 }也可以不含参数,不含参数时,参数表中可写关键字 void 或省略,为规范起见,教程中对没有参数的函数,参数表中统一写 void。例如: 类型 函数名 () {函数体 }等价于: 类型 函数名 (void) //建议的书写方式 {函数体 } 如果该函数没有返回类型,则为 void 类型。例如: void add (int x,int y) {printf ("sum=%d\n", x+y); } 除了 void 类型外,在函数体中,均需要显式使用 return 语句返回对应的表达式的值。 函教返回值 函数的值是指调用函数结束时,执行函数体所得并返回给主调函数的值。 关于函数返回值说明如下。1) 带返回值的函数,其值一般使用 return 语句返回给调用者。其格式为: return 表达式;或者 return (表达式);例如: int add (int a, int b) {return (a + b); //return 后为表达式 } 函数可以含一个或多个 return 语句,但每次调用时只能执行其中一个 return 语句。例如,求整数绝对值的函数: int f (int n) //含多个return语句,但每次调用只执行一个 {if (n = 0)return n;elsereturn -n; }
成都创新互联服务项目包括紫云网站建设、紫云网站制作、紫云网页制作以及紫云网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,紫云网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到紫云省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
从参数角度分类:1.有参函数:函数有形参,可以是一个,或者多个,参数的类型随便,完全取决于函数的功能。2.无参函数:函数没有参数,在形参列表的位置写一个viod或什么都不写。
每个C程序都至少有一个函数,即主函数main(),如果程序的任务比较简单,全部的代码都写在main()函数中,但是,在实际开发中,程序的任务往往比较复杂,如果全部的代码都写在main()函数中,main()函数将非常庞大臃肿,结构复杂,代码重复。
详细信息:
我们可以根据程序的逻辑和任务的分工把代码划分到不同的自定义函数中,main()更关心业务逻辑和处理流程,需要执行具体任务的时候,调用这些自定义的函数就可以了。
为了方使理解,我们把函数分为两种:一种是库函数,一种是自定义函数。库函数是C语言提供的,或系统提供的,实现了某些基本的功能,例如scanf、printf,在程序中可以直接使用。
自定义函数是程序员为了完成某项任务而编写的函数,目的是为了实现某项的功能或让主程序更简洁。程序员在使用自定义函数之前,必须先声明和定义。
先举个例子: #include int max(int,int); //这是函数max的申明,最后要加分号 int main() { int a=1,b=2,c; c = max(a,b); //这是函数max的使用 printf("%d",c); return 0; } int max(int n,int m) //这是函数max的定义部分,最后不加分号 { if (nm) return n; else return m; } 不能在函数体内定义函数是什么意思?【就是说函数在程序中不能嵌套定义,这个和Pascal语言不同,例如上面程序中,max函数不能定义在main函数中间】定义是声明还是使用?【定义既不是申明,也不是使用,函数具体功能的实现代码叫做函数的定义,如上面程序最后7行就是定义】函数不是应该先声明在使用吗?【是的,但如果函数定义在函数使用之前,就可以不用申明(如下面程序)。函数定义在函数使用后的情况下(如上面程序),先声明,能使编译器在编译在编译过程中能够识别使用的函数】 #include int max(int n,int m) //这是函数max的定义部分,最后不加分号 { if (nm) return n; else return m; } int main() { int a=1,b=2,c; c = max(a,b); //这是函数max的使用 printf("%d",c); return 0; } 定义如何解释?【见第二个问题】
c语言中一个完整的函数由函数首部和函数体构成,而且定义函数时两者都是必不可少的。
函数定义的一般形式如下:
类型标识符
函数名(形参表列)
//
这是函数首部
//
以下{
}内的是函数体
{
说明部分
执行部分
}
举例说明如下:
//
定义一个不带返回值的函数
//
函数功能:输出形参的值
void
fun(int
a,
int
b)
{
printf("%d,
%d\n",
a,
b);
}
//
定义一个带返回值的函数
//
函数功能:返回2个整数数的最大值
int
fun(int
a,
int
b)
{
return
ab
?
a
:
b;
}
如果是用纯C语言来写,把所有函数声明放在最前面,然后函数定义好,这样的函数是公有的,可以随意调用。然后主函数不能少,这样子的话,所有函数包括主函数的前后顺序可随意。
void fun1();
void fun2();
//...
int main()
{
return 0;
}
void fun1()
{
//code...
}
void fun2()
{
//code...
}
//...