首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数,该如何处理

2012-04-04 
一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数标准答案是int(*a[10]) (

一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数
标准答案是int (*a[10]) (int);这个
为什么这样不可以 (int (*)(int)) a[10];

[解决办法]
因为C/C++的类型系统的派生方法是嵌套,通过类型嵌套进行无限派生。

如果声明:int ( *p )( int );你可以很容易看明白p是一个函数指针,然后,用a[10]代替那个p,这就是个嵌套的过程,因此,(int (*)(int)) a[10]是不符合嵌套语法的。
[解决办法]
(int (*)(int)) a[10]; // 这个是类型的强制转换

别问我为何在语法上如此区分,我只知道语法就是习惯、规定,不一定有道理
[解决办法]
看一下函数指针的定义: typedef int (*a)(int b); 只不过你的是指针数组而已,这就是一个指向一个函数参数为一个int型,返回值也为int函数的指针。 形式和这个保持一样,再怎么变能如何?
[解决办法]
(int (*)(int)) a[10];只可以有一个函数指针a【10】;而int (*a[10]) (int);有10个函数指针

热点排行