前言
在c语言中函数的地位无可厚非的占据着中心地位,函数其实就是基本逻辑语言语言组成的,但是他便利了使用,函数可进行分装,是其具有模块化,还可以控制代码逻辑,防止一些异常情况的发生
函数的分类
系统调用函数
系统调用的函数,如 read,write等等,其中可以在man帮助手册中查询到man 2 xxx
系统库函数
在系统里自带的一些函数,如printf(),scanf()
自定义函数
自己编写的函数来调用
函数的格式
<储存类型> 数据类型 函数名称 (形参)
{
函数体
}
例如
int main(int argc ,char * argv[])
{
printf("nihao\n");
return 0;
}
注:
1.在函数不需要返会值的时候应该使用viod类型的,但是需要返回值的时候应该与其类型对应
2.函数的参数可以没有,但是需要参数的时候,应该用“,”隔开,函数的参数还可以放不同类型的数值
3. 每一个xxx.c文件值应该有一个main函数接口
4. 巧妙的运用函数的返回值,其中返回负值用于放错,零一般代表的是正确,再其次如需要一些有用的值可以在返回值中带出,不过要注意的是带回的函数值应该有一个变量接收
5. 函数尽量不要嵌套,每一个函数都是一个独立的模块
函数的调用
实参
实际参数,是实际数据有值的变量,函数调用的时候使用,但注意不要带数据类型
形参
形式参数,只是占位没有实际意义,只是在函数定义的时候使用,相当于局部变量
注:
- 函数的定义一定要写到函数调用之前
- 函数使用之前需要声明,声明的时候和函数定义时候一样,但是要注意,在函数定义后要有“;”
- 一般函数的声明在固定的xxx.h文件中,xxx.h一般都有xxx.c的源文件,其中函数声明的过程中可以没有值,但一定要有类型
函数传参数
按值传递
- 将数据传入函数,并进行加工处理,形参每次拷贝,实参在数据里面进行处
- 用于每次都是在函数内部做运算 ,不需要修改值本身
按地址传递
将实参的地址传给形参,在函数内部修改地址数值的变量
本质上还是值传递,不过这个适用与将变量带出函数继续使用的数据
全局变量
- 全局变量是定义在所有的函数外,如果全局变量想要跨文件使用就需要用extern声明,这个一般放在.h文件中
- 不是传参数,但是能起到相同的作用,全局变量可以一直存在,直到这个程序结束
- 如果全局变量名字和局部变量重复,那么局部变量优先与局部变量