二.函数高级
1.指针函数
是一个函数,返回值为指针类型的函数
注意:
被调函数内部返回的指针一般不能是函数内部的局部变量
int *fun(int, int)
2.函数指针
是一个指针,指针指向函数
函数名是指向函数入口的地址
定义:
返回值类型 (*p)(变量1,变量2...)
指针指向的是 *fun
即, int *(*p)(int, int) = fun(int, int)
3.回调函数:
将函数方法作为参数传递给被调函数
4.递归函数
定义:
在调用一个函数过程中又出现直接或间接调用函数本身
适用场景:
一个规模较大的问题可以分解为若干个规模较小的相似问题
递归思想和循环思想:
递归需要函数反复的调用(入栈,出栈,传参);
循环不需要额外开销
快速排序
***
5.带参宏与不带参宏
宏的本质是,在编译阶段进行文本替换
不带参宏
#define PI (3.14)
带参宏
#define INTCMP(a,b) (a > b ? a : b)
优点:
与函数相比,不再有入栈,出栈,传参等一系列操作,效率高
缺点:
与函数相比,当调用次数过多时,代码体积较大,占用较多代码段空间
#define MUL(a,b) (a * b)
main()
{
int c = 20;
int ret = MUL(c + 1, 20);//文本替换结果为c + 1 * 20 = 40 而非420
}
define后接多行代码时,要用'\'符号进行连接
#define func(int a, int b...) do{
语句1;\
语句2;\
...
}while(0)
C语言学习day14
最新推荐文章于 2024-10-15 16:25:28 发布