函数就是功能。每一个函数用来实现一个特定的功能。函数的名字应反映其代
表的功能。
main函数必须要由,且只能由一个。其他函数可以有多个或者没有。
/*
返回值类型 函数名字(形参列表)
{
//函数体
}
*/
int max(int a, int b)
{
if(x>y){
return x;
}else{
return y
}
}
形参必须带类型,而且以逗号分隔
函数不能嵌套,不能再一个函数体内定义另外一个函数。
函数名不能重复
1、库函数(c库实现的)
2、自定义函数(程序员自己实现的函数)
3、系统调用(操作系统实现的函数)
函数由形参,可以是一个或者多个。
int func(int a, float b, double c)
{
}
//void可以省略
int func(void)
{
}
//必须返回一个char类型的数据
char func()
{
char b = 'a';
return b;
}
//默认返回整型
func()
{
return 1;
}
//void 表示没有返回值,不需要return
void func(int a)
{
}
对已经定义的函数,进行说明。
函数的声明可以声明多次。
有些情况下,不对函数进行声明,编译器编译的时候,可能不认识这个函数。因为编译器在编译c程序的时候,是从上往下编译的。
1、调用函数和被调用函数在一个.c文件的时候
//被调用函数在上,不需要声明
void func(void)
{
printf("hello");
}
void main()
{
func();
}
//被调用函数在下,需要声明
void main()
{
void func(void);
func();
}
void func(void)
{
printf("hello");
}
2、调用函数和被调用函数不在一个.c文件的时候
1、函数中声明
void main()
{
float add(float a, float b);//函数中声明
//float add(float, float);//参数名可以省略
func();
}
float add(float a, float b)
{
return a+b;
}
2、文件开头进行声明
float add(float a, float b);//在文件开头进行声明
void main()
{
func();
}
float add(float a, float b)
{
return a+b;
}
3、其他文件的函数
文件Math.c
#include
float add(float a, float b)
{
return a + b;
}
头文件Math.h
extern float add(float a, float b);
main函数所在文件
#include
#include "Math.h"
//或者不适用头文件,直接文件开头声明外部函数
//extern float add(float a, float b);
int main()
{
float a = add(1.1f, 2.2f);
return 0;
}
定义:
float add(float a, float b);
void main()
{
//调用方传递的叫实参
add(1.1f, 2.2f);
}
//形参
float add(float a, float b)
{
return a+b;
}
如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static,即:
static类型名函数名(形参表);
例如,函数的首行:
static int fun(int a,int b)
表示fun是一个内部函数,不能被其他文件调用。
如果在定义函数时,在函数首部的最左端加关键字extern,则此函数是外部函数,可供其他文件调用。
如函数首部可以为
extern int fun(int a, int b)
这样,函数fun就可以为其他文件调用。
C语言规定,如果在定义函数时省略extern,则默认为外部函数。