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等语句甚至构造其他函数等方法 进行地址赋值? 展开
【问题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等语句甚至构造其他函数等方法 进行地址赋值? 展开
6个回答
展开全部
?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 了!
你有不明白的再追问。
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个函数
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询