函数
1,函数是编程语言中不可或缺的一部分,并且通过函数的嵌套和调用,实现多种功能。
函数的分类:
库函数:C语言中自带的函数,通过包含头文件,可以直接调用。
自定义函数:自己实现的函数功能。
函数的表示形式:
数据类型(可以是void无类型)+函数名+(形参)
{
函数的实现
return 返回值
}
eg:加法函数的使用

形参和实参
实参:
主函数实际输入的值,即完成函数操作在主函数传递的实际参数
形参:
在自定义函数中形式上的参数,同时形式参数是实际参数的临时拷贝,它拥有自己 独立的空间。
return语句
在循环中我们学过在 while 语句中,break
语句表示的是跳出这个循环,而return 语句表示的是结束与运行进程。彻底结束。
1.return 语句后面必须有返回值,如果没有数据类型则后面可以什么都不写。
2.必须表示在任意情况下都有函数值返回
例如在判断奇数和偶数时,如果奇数返回一个值,在偶数的情况下没有返回值,就会报错。
!
数组做函数参数
eg:将一个数组的数全部置为-1

数组作为函数与普通数字不同的是数组的实参和形参的地址是相同的,不会在创建新的地址。
eg:判断某年某月有几天
int year(int x)
{
if ((x % 400 == 0) || (x % 4 == 0 && x % 100 != 0))
return 1;
else
return 0;
}
int month(int x,int y)
{
int arr[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
int day =arr[y];
if (year(x) && (y == 2))
{
day += 1;
}
return day;
}
#include<stdio.h>
int main()
{
int a = 0; int b = 0;
scanf(" %d %d", &a, &b);
int year(a,b);
int month(a,b);
printf("%d",month(a,b));
return 0;
}
函数的嵌套调用及链式访问
函数的嵌套调用,顾名思义及一个函数里面可以包含另一个函数,在上述的判断某年某月某天的练习中,我们就可以知道在调用判断年的函数中,我们就调用了判断月的函数,跟if一样,函数也可以进行嵌套。
链式访问
链式访问是指一个函数的返回值是另一个函数的参数,为此我们举一个经典的例子;
printf是stdio.h中的函数

在这里就运用了链式访问,里面有三个printf,其中在库函数的定义中,设定prinf的返回值为数字的个数所以逻辑就变得清晰了
如图所示

函数的声明和定义
在严格的语法当中,函数的定义应该在主函数的调用之前,如果没有在主函数前面,应该在主函数前面进行声明。

函数的声明
函数的声明通常是放在主函数前,如图所示;

在大型项目中,函数的声明通常不会放到源文件中,因为在一个项目中,函数会被多次调用,如果写在同一个文件里,就会变得非常复杂,为此,我们为函数的的声明创建了一个头文件,及后缀为.h 的文件。
让我们打开资源管理器


static和extern
他们是c语言中修饰变量的符号。
static是表示静止的意思,也就是它能将变量保存到静态库里
extern是声明外部符号的

当变量被static修饰时,就会将变量从栈区变为静态区,从而只能在单个文件里使用无法被调用。

以上为extern的使用
以上为函数的大部分语法。
2017





