#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
int main()
{
//函数指针的作用
//函数指针是指向函数的指针,可以通过函数指针调用函数。
int (*p)(int, int) = add;
printf("%d\n", p(1, 2));
//1.隐藏接口
//2. 间接体现多态
return 0;
}
cpp复制代码
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
int mul(int a, int b)
{
return a * b;
}
int main()
{
//函数指针数组怎么用
//函数指针数组是指一个数组,数组中的每个元素都是一个函数指针。
int (*p[3])(int, int) = {add, sub, mul};
printf("%d\n", p[0](1, 2));
printf("%d\n", p[1](1, 2));
printf("%d\n", p[2](1, 2));
return 0;
}
cpp复制代码
#include <stdio.h>
//什么是可变参数
/**
* 实现原理
* 变量压栈是连续的
* C语言提供了三个宏定义
* va_start(ap, n) 初始化ap
* va_arg(ap, type) 获取参数
* va_end(ap) 结束
*/
#include <stdarg.h>
int add(int n, ...)
//以一个参数n表示可变参数的个数
{
int sum = 0;
va_list ap;
va_start(ap, n);
for (int i = 0; i < n; i++)
{
sum += va_arg(ap, int);
}
va_end(ap);
return sum;
}
int main()
{
//可变参数怎么用
//可变参数是指一个函数可以接收任意个数的参数。
printf("%d\n", add(3, 1, 2, 3));
return 0;
}