static 和 extern
外部函数:定义的函数能被本文件和其他文件访问
内部函数:定义的函数只能被本文件访问,其他文件不能访问
默认情况下,所有函数都是外部函数。
完整的定义一个外部函数:
extem viod test() //extern是可以省略的,默认都是省略的
{
printf("调用了test函数
")
}
完整的声明一个外部函数:
extem viod test(); //可以省略extern, 默认情况下都是外部函数
定义一个内部函数:
static viod test2()
{
printf("调用了test2")
}
内部函数不能直接被其他文件访问,只能间接被访问
不允许有同名的外部函数,内部函数的名字一样在每个文件里面是不冲突的
static对函数的作用:
1.定义一个内部函数
2.声明内部函数
extern对函数的作用:
1.完整的定义一个外部函数
2.完整的声明一个外部函数
static和extern对变量的作用 :定义和声明一个内部和外部变量
外部变量:定义的变量能被本文件和其他文件访问
内部变量:定义的变量只能本本文件访问,不能被其他文件访问
默认情况下,所有的全局变量都是外部变量
不同文件中的同名外部变量都代表着同一个变量,可以重复定义
函数
任何一个C语言程序都是由一个或者多个程序段构成的,每个程序段都有自己的功能,我们一般称这些程序段为函数,所以,你可以说C语言程序是由函数构成的。
函数的定义
1.定义函数的目的
将一个常用的功能封装起来,方便以后调用
2.定义函数的步骤
函数名:函数叫什么名字
函数体:函数是干什么用的,里面包含了什么代码
3.格式
固定格式(很多语言的函数都是这么写的)
返回值类型 函数名(形式参数列表)
{
函数体
}
举例
定义一个函数,计算两个整数的和
sum(int a, int b)
{
int c =a+b;
}
形参和实参
形参:定义函数的时候要定义的变量,形参可以有无数个,在函数体不能定义和形参一样的变量
实参:在调用函数的时候传入函数的实际参数,实参必须要和形参一一对应
注意
如果是基本数据类型作为函数形参,纯粹是值传递,修改函数内部形参的值,并不会影响外面实参 的值
一个函数可以没有形参,也可以有无限多个参数
定义一个内部变量:
static int b; // 和定义一个内部函数的形式差不多
不同文件中的同名内部变量,互不影响