C语言 指针数组如何存放函数地址

**********************以下问题均在C语言当中讨论************************************【问题1】指针数组可以存放函... **********************以下问题均在C语言当中讨论************************************

【问题1】指针数组可以存放函数的地址吗?
【问题2】如果可以,数组指针类型是啥?是int *num[ ]还是chan *num[ ]还是其他类型?
【问题3】如果可以,有木有简单方法解决下面问题

有100个函数,HS1(),HS2(),HS3(),……,HS98(),HS99(),HS100()。
还有1个指针数组num[100]来存放这100个函数的地址,

要求将 HS1()的地址放到num(1)中, HS2()地址放到num(2)中, HS3()的地址放到num(3)中, 以此类推 直到 HS100()的地址放到num(100)

当然一个挨着一个的地址赋值是可以的,但那样要100次才行,能不能利用for,while,if等语句甚至构造其他函数等方法 进行地址赋值?
展开
 我来答
ycsxm
2013-05-12 · TA获得超过3.3万个赞
知道大有可为答主
回答量:1.4万
采纳率:0%
帮助的人:7953万
展开全部
?C/C++的指针的灵活,常把许多初学者搞晕,连高手也是如此。
1.当然,可以呀,一切数据都可返回;
2.复合指针类型直接表示非常麻烦(连高手都是这样),可以分解成多个简单类型;
typedef
void funtype(void);
funtype * num[100];
分解后简单多了!!!!!

3. 因为函数名不是字符串,初始化时,没法用while for实现:
最简单的表示方法,:
typedef
void funtype();
funtype * num[100]={HS1,HS2,HS3,HS4,HS5,....................,HS100};
// 100个函数名都要列出,不能用省略号
这样 num[i] // i=0,...,99 可表示你的任意一个函数了,这样你可以用
for,while 了!
你有不明白的再追问。
追问
要是能给个简单的示例程序就好了,可以不列100个函数,列三四个示意下就够了。
追答
#include "stdio.h"
void HS1()
{
printf("1");
}
void HS2()
{
printf("2");
}
void HS3()
{
printf("3");
}
void HS4()
{
printf("4");
}
main()
{
typedef
void funtype();
funtype *num[]={HS1,HS2,HS3,HS4};
for (int i=0;i<4;i++)
(num[i])(); // 执行这N个函数
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式