C语言 如何访问由void指针传递给函数的函数指针数组的元素? 您所在的位置:网站首页 c语言删除数组元素函数 C语言 如何访问由void指针传递给函数的函数指针数组的元素?

C语言 如何访问由void指针传递给函数的函数指针数组的元素?

2023-03-13 07:28| 来源: 网络整理| 查看: 265

我试图通过一个空指针将一个函数指针数组传递给一个函数,我不知道如何在传递给它的函数内部访问数组元素。示例1 -通过void指针传递正则数组:

#include void function(void* ptr) { int* arr = ptr; for(int i = 0; i < 5; ++i) { printf("%d ", arr[i]); } } int main() { int arr_nums[5] = { 1, 2, 3, 4, 5 }; function((void*)arr_nums); return 0; }

输出:1 2 3 4 5示例2 -通过void指针传递函数:

#include int add(int a, int b) { return (a + b); } int sub(int a, int b) { return (a - b); } int mult(int a, int b) { return (a * b); } int divide(int a, int b) { return (a / b); } int function(void *ptr) { return ((int(*)(int, int))ptr)(4, 2); } int main() { printf("%d\n, function((void*)add)); printf("%d\n, function((void*)sub)); printf("%d\n, function((void*)mult)); printf("%d\n, function((void*)divide)); return 0; }

输出:

6 2 8 2

示例3 -将add、sub、mult和divide更改为函数指针数组:

... int main() { int (* fp_arr[4])(int, int) = { add, sub, mult, divide }; printf("%d\n", function((void*)fp_arr[0])); printf("%d\n", function((void*)fp_arr[1])); printf("%d\n", function((void*)fp_arr[2])); printf("%d\n", function((void*)fp_arr[3])); return 0; }

输出:

6 2 8 2

问题-尝试发送整个函数指针数组并访问函数内的元素:

... int function(void *ptr) { return ((int(*)(int, int))ptr)(4, 2);


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有