面试的时候发现这个地方掌握的不够好,所以单独复习下,顺便写一篇博客。
这篇文章的所有代码都是用C实现的,这是由于C没有面向对象的特性,所以我希望用函数指针把C的结构体弄得有一点面向对象的感觉。
先介绍函数指针、回调函数,然后用C结合回调函数实现一个有面向对象风格的链表
函数指针:
函数指针,就是指向函数的指针
基本的函数指针(无参数无返回值)//函数指针
void fun( )
{
printf("fun()\n");
}
int main()
{
//void *fp1() = &fun
void (*fp1)();
fp1 = fun;
fp1();
return 0;
}
有参数//带参数
void fun(int val1, int val2)
{
printf("val1 = %d, val2 = %d\n", val1, val2);
}
int main()
{
void(*fp)( int val1, int val2 ) = &fun;
fp(1, 2);
return 0;
}
有参数及返回值//带参数及返回值
int fun(int val1, int val2)
{
return val1 + val2;
}