gpt4 book ai didi

c++ - 如何在C中定义函数指针数组

转载 作者:行者123 更新时间:2023-11-30 16:37:22 25 4
gpt4 key购买 nike

我有一个小问题。我正在尝试使用 calloc 动态定义函数指针数组。但我不知道如何写语法。非常感谢。

最佳答案

函数指针的类型与函数声明类似,但用“(*)”代替函数名。所以指向:

int foo( int )

将是:

int (*)( int )

为了命名该类型的实例,请将名称放在星号后面的 (*) 内,因此:

int (*foo_ptr)( int )

声明一个名为 foo_ptr 的变量,它指向该类型的函数。

数组遵循将括号放在变量标识符附近的普通 C 语法,因此:

int (*foo_ptr_array[2])( int )

声明一个名为 foo_ptr_array 的变量,它是一个包含 2 个函数指针的数组。

语法可能会变得非常困惑,因此通常更容易对函数指针进行 typedef,然后声明它们的数组:

typedef int (*foo_ptr_t)( int );
foo_ptr_t foo_ptr_array[2];

在任一示例中,您都可以执行以下操作:

int f1( int );
int f2( int );
foo_ptr_array[0] = f1;
foo_ptr_array[1] = f2;
foo_ptr_array[0]( 1 );

最后,您可以使用以下任一方法动态分配数组:

int (**a1)( int ) = calloc( 2, sizeof( int (*)( int ) ) );
foo_ptr_t * a2 = calloc( 2, sizeof( foo_ptr_t ) );

注意第一行中额外的 *,将 a1 声明为指向函数指针的指针。

关于c++ - 如何在C中定义函数指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47961506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com