C语言 VS (E0109) 函数作为数组元素调用 |
您所在的位置:网站首页 › 数组作为函数参数怎么调用 › C语言 VS (E0109) 函数作为数组元素调用 |
写Lab的时候遇到的问题+关于函数作为数组元素的写法 //全局变量数组(在不同函数中调用) void* ftable[3]; //作为数组元素的函数number void number(int a){ printf("Value of a is %d\n",a); } //初始化数组 void initalize(){ void(*num)(int) = & number; ftable[0] = num; } //在main中使用数组内的函数 void main(){ initialize(); void (*arr) (int) = ftable[0]; (*(*arr))(1); // 输出 ("Value of a is 1") } 下面是遇到E0109的解决过程 //函数作为参数和数组元素 void* fun[3]; //用于存放函数 void func(void(*f)(int)) { for (int ctr = 0; ctr < 5; ctr++) { (*f)(ctr); } } void print(int x) { printf("%d\n", x); } void main() { void (*print1)(int) = &print; (*print1)(1); fun[0] = print1; (*fun[0])(1); //此处报错E0109 } 类似的,在main函数中 void* a = fun[0]; void* b = print1; (*a)(1);//E0109 (*b)(1);//E0109 可以在void func(void(*f)(int))中使用 func(fun[0]); 效果等于 func(print); //尝试不同赋值方式 void* fun[3]; void (*p1)(int) = &print; fun[0] = p1; fun[1] = &print;
void* a = p1; //(*a)(1) |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |