内联函数:
如果在声明函数时使用关键字inline,编译时会在调用处直接用函数体进行替换,而不是调用函数
既然是直接替换,那么里面肯定不能有循环语句,switch语句等
注:①内联函数可以避免函数调用,节省参数传递、控制转移等开销
②一般编译器自带优化,对于充分简单的函数,编译器可以自动把函数编译成inline的
带默认参数值的函数:
可以预先设置默认的参数值,调用时如给出实参,则采用实参值,否则采用预先设置的默认参数值
如下程序(代码中有注释)
#include<stdio.h>inline int Add(int x, int y=1, int z=2);//可以预先设置默认的参数值,调用时如给出实参,则采用实参值,否则采用预先设置的默认参数值/*有默认参数的形参必须列在形参列表的最右边,即默认参数值的右面不能有无默认值的参数,如下面的定义就是非法的int Add(int x=2, int y, int z=2)//错误!{return x+y+z;}*/int main(void){int d, c;scanf("%d%d", &c, &d);printf("%d\n", Add(c, d));//ans = c+d+2printf("%d\n", Add(c));//ans = c+1+2printf("%d\n", Add(c, d, 100));//ans = c+d+100//不允许Add(),这样会编译报错,因为函数中的第一个形参没有给默认值return 0;}int Add(int x, int y, int z)//如果原型声明在函数定义之前,那么默认参数必须且只能在原型声明中给出{return x+y+z;}