简单的打印一个hello world
void func(int a, char b)
{
printf("hello world\n");
}
1:先定义函数的类型,再通过类型定义函数的指针变量
void text1()
{
//先定义函数的类型,再通过类型定义函数的指针变量
typedef void(FUNC_TYPE)(int, char);
//定义出一个函数类型 返回值是void,形参列表是(int char)
FUNC_TYPE* p = func;//fanc函数名只是一个地址
p(10, 'a');//用指针调用地址
}
2:先定义出函数的指针类型,通过类型定义函数的指针变量
void text2()
{
//先定义出函数的指针类型,通过类型定义函数的指针变量
typedef void(*FUNC_TYPE)(int, char);
FUNC_TYPE p = func;
p(1, 'a');
}
3:直接定义函数指针变量
void text3()
{
//直接定义函数指针变量
//int* p = func;//无法从“void (__cdecl *)(int,char)”转换为“int *” cdecl可以不要
//原定义 void Func(int t)
//函数指针表示:void(* F)(int t) = Func
//返回类型 + (指针变量名)(形参类型) = 函数名
void(*p)(int, char) = func;
p(2, 'a');
}
整合:
#include <stdio.h>
#include <stdlib.h>
void func(int a, char b)
{
printf("hello world\n");
}
void text1()
{
//先定义函数的类型,再通过类型定义函数的指针变量
typedef void(FUNC_TYPE)(int, char);//定义出一个函数类型 返回值是void,形参列表是(int char)
FUNC_TYPE* p = func;//fanc函数名只是一个地址
p(10, 'a');//用指针调用地址
}
void text2()
{
//先定义出函数的指针类型,通过类型定义函数的指针变量
typedef void(*FUNC_TYPE)(int, char);
FUNC_TYPE p = func;
p(1, 'a');
}
void text3()
{
//直接定义函数指针变量
//int* p = func;//无法从“void (__cdecl *)(int,char)”转换为“int *” cdecl可以不要
//原定义 void Func(int t)
//函数指针表示:void(* F)(int t) = Func
//返回类型 + (指针变量名)(形参类型) = 函数名
void(*p)(int, char) = func;
p(2, 'a');
}
int main()
{
//text1();
//text2();
text3();
system("pause");
return EXIT_SUCCESS;
}
函数指针数组的使用方式
//函数指针数组
void func1()
{
printf("1\n");
}
void func2()
{
printf("2\n");
}
void func3()
{
printf("3\n");
}
void text4()
{
//函数指针数组的定义方式
//返回类型要一样 并且形参类型也要一样才可以一起调用
void (*F[3])();
F[0] = func1;
F[1] = func2;
F[2] = func3;
for (int i = 0; i < 3; i++)
{
F[i]();
}
}
int main()
{
text4();
system("pause");
return EXIT_SUCCESS;
}