函数指针数组如何调用里边的函数
时间: 2023-09-01 14:08:41 浏览: 73
函数指针数组中存储的是函数指针,而不是函数本身。要调用函数指针数组中存储的函数,可以通过以下两种方式:
1. 使用数组下标访问函数指针,并将其解引用为函数指针类型,然后调用该函数指针。
示例代码:
```c
void (*func_ptr_arr[3])(int); // 声明一个函数指针数组
func_ptr_arr[0] = &func1; // 将函数指针赋值给数组元素
func_ptr_arr[1] = &func2;
func_ptr_arr[2] = &func3;
int arg = 123;
(*func_ptr_arr[0])(arg); // 通过数组下标访问函数指针,并将其解引用为函数指针类型,然后调用该函数指针
```
2. 将函数指针存储在一个临时变量中,然后调用该变量。
示例代码:
```c
void (*func_ptr)(int); // 声明一个函数指针
func_ptr = func_ptr_arr[0]; // 将函数指针数组中的一个元素赋值给函数指针变量
int arg = 123;
(*func_ptr)(arg); // 调用函数指针变量
```
相关问题
指针数组调用构造函数
指针数组的调用构造函数的情况与对象数组类似。如果只定义指针而不给指针赋值,则不涉及内存分配,也不会调用构造函数。只有在给指针赋值的时候,才会涉及到内存分配,并且调用构造函数。因此,指针数组的调用构造函数的次数与指针数组的元素个数有关。如果指针数组有N个元素,则调用构造函数的次数为N次。引用<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [关于构造函数调用次数](https://blog.csdn.net/ken2232/article/details/129351130)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [观察不同对象分别何时调用构造函数与析构函数_C/C++](https://download.csdn.net/download/weixin_42662171/86695295)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
C++ 函数 指针 数组
函数指针数组是指一个数组,它的元素都是函数指针。它的定义方式为:`返回值类型 (*数组名[数组长度])(参数列表)`,其中,`返回值类型`是函数返回值类型,`参数列表`是函数的参数列表,`数组名`是函数指针数组的名称,`数组长度`是函数指针数组的长度。
例如,定义一个包含三个函数指针的函数指针数组,每个函数都没有参数,返回类型为`int`,可以这样写:
```c++
int func1();
int func2();
int func3();
int (*arr[3])() = { func1, func2, func3 };
```
其中,`arr`是一个包含三个函数指针的数组,每个函数指针指向一个返回类型为`int`,参数列表为空的函数。
通过函数指针数组可以实现函数的动态调用,例如可以通过下标来访问函数指针数组的元素,然后调用该函数指针所指向的函数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)