指针函数
char* func(char *str)
{
str = "Hello world";
return str;
}
void main()
{
char *buf;
char str[20];
buf=func(str);
printf("%s\n", buf);
}
函数指针
int add(int a, int b)
{
return a+b;
}
int(*func)(int,int); //有两个int参数、返回类型为int的函数指针
void main()
{
int result;
func=add; //add的地址给指针
result = func(3,2);
printf("%d\n", result);
}
typedef定义函数指针
int add(int a, int b)
{
return a + b;
}
typedef int(*INIT_FUN)(int, int);//声明函数指针类型
//定义一个函数,参数是op,返回是指针
INIT_FUN func(char op)
{
if (op == '+')
return add;
}
void main()
{
int result;
INIT_FUN func2 = add; //用法1
result = func2(2, 3);
printf("%d\n", result);
result = func('+')(1, 2); //用法2
printf("%d\n", result);
}
函数指针数组
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
typedef int(*INIT_FUN)(int, int);
INIT_FUN fun[]=
{
[0x01] = add,
[0x02] = sub,
};
void main()
{
int result;
result = fun[1](3, 2);
printf("%d\n", result);
result = fun[2](3, 2);
printf("%d\n", result);
}