传入参数的个数
↓
int argc, char **argv
(*argv[ ])
↑
命令行参数
main函数传参 跟在命令后传参:命令行参数
./demo hello1 hello2……
输出argc = 3(命令行也算一个参数)
./a.out hello1 hello2……
输出argv[0] = ./a.out
argv[1] = hello1
argv[2] = hello2
入口参数检查:
if(argc != 2)------(此时只能传一个参数)
{
printf("please input string!\n");
exit(1);
}
函数名:指针常量 保存的是函数的入口地址
函数指针变量
int add(int a, int b)
{
……
}
int (*p_func)(int,int);
p_func = add;(&add也行)
sum = p_func(6,5);
函数名可以作为实参传递
用函数指针接 void fun(int (*p_func)(int,int), int a, int b) 函数指针做形参,指向的函数:回调函数或叫钩子函数 作用:提高代码的扩展性、维护性
好的扩展性:增加新的功能时,修改的功能越少越好
不修改原来代码,只增加新的代码
函数指针数组:
int (*func_array[3])(int,int);
func_array[0] = add;
func_array[1] = sub;
func_array[2] = mul;
int i;
for(i = 0; i < 3; i++)
{
printf("%d\n",func_array[i](6,5));
}