我们都知道在 C 语言中,typedef
的作用是给已有的类型重新定义一个新的名字,今天在这里我们主要探讨一下使用 typedef
来简化函数指针的用法。
Example print
首先我们来看一个例子:
#include<stdio.h>
void print_to_n(int n)
{
for (int i = 1; i <= n; ++i)
printf("%d\n", i);
}
void print_n(int n)
{
printf("%d\n, n);
}
在这个例子中,我们的两个函数有相同的函数签名,只是使用不同的输出形式来输出。在这里,我们就可以使用 typedef
来创建一个叫 printer_t
的函数指针类型,如下:
typedef void (*printer_t)(int);
这个 typedef
创建了一个名叫 printer_t
的函数指针,其中它需要输入一个 int 型数据 并且没有返回,这样的话也刚好跟我们上述例子里的函数签名相匹配。我们可以通过创建一个所创建类型的变量来使用它,类似于下面这样:
printer_t p = &print_to_n;
void (*p)(int) = &print_to_n; // This would be required without the type
然后我们可以通过函数指针变量来调用这个函数指针: