C语言之函数学习
1.函数三种形式-函数的定义-函数的调⽤-函数的声明2.函数传递1.赋值传递1.实参将值传递给形参,形参不会影响实参类似于学霸拷贝一份作业给学渣抄学霸的拷贝的作业给学渣乱涂乱画学霸的原件不会影响2.函数体内想要修改函数体外的变量值时不能用值传递2.全局变量传递数据1.全局变量 就像是一个公交车谁都可以上上下下因此可以用来在函数间传递数据,但会有风险所以最好少用2.全局变量可以与局部变量重名但是在局部范围内局部变量会将全局变量隐藏#includestdio.h //全局变量可以在函数间传递数据 int a 100; int b 200; void swap(void) { //局部变量不能用来在函数间传递数据因为生存周期是在函数运行完后就销毁了 int a 50;//全局变量可以与局部变量重名但是函数内会优先使用局部变量的值 int temp 0; temp a; a b; b temp; return; } int main(void) { swap(); printf(a %d b %d\n,a,b); return 0; }3.数组传递1.⼀维整形数组int a[5]; int fun(int array[], int len);2.一维字符型数组char str[32] {hello}; int fun(char pstr[], int len); int fun(char pstr[]);4.递归函数1. 递归函数定义时调⽤函数体本⾝成为递归函数2. 注意1. 递归函数必须有结束条件2. 避免深层次的递归5.宏定义1.不带参1.宏名⼀般为⼤写与变量名做区分2.宏只是代码的替换中间不会进⾏任何数据计算的操作2.带参宏带参宏与函数的区别函数有参数类型、返回值、返回值类型、调⽤相关的概念带参宏没有这些概念它只是代码的替换带参宏执⾏效率⾼因为没有函数传参等这些过程的资源开销带参宏主要⽤于封装⼀些短⼩的代码模块带参宏会让代码体积增⼤函数不会使代码体积增⼤6.条件编译满足条件加入编译不满足条件从编译中去除#if 条件 代码块1 #elif 条件 代码块2 #else 代码块3 #endif 如果没有定义宏名则将后续代码加入编译中 #ifndef 宏名 #endif 如果定义宏名则将后续代码加入编译中 #ifdef 宏名 #endi可以用 gcc -E 文件名.c - o 文件名.i 查看编译文件