打印

C语言问题!

[复制链接]
2092|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
areshan|  楼主 | 2010-10-26 14:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问问各位大侠:C语言中能够把函数名(也就是函数入口地址)存放在数组中吗????这样就可以用数组赋值给指向函数的指针调用不同的函数了!!!!要是能这个数组该是什么类型呢?

相关帖子

沙发
wade104| | 2010-10-26 16:10 | 只看该作者
我不知道这样行不,但是你可以用函数指针,同样可以实现这个的功能。。。不知道对你有帮助没。

使用特权

评论回复
板凳
fzu_csc| | 2010-10-26 16:24 | 只看该作者
可以。

函数指针数组。

使用特权

评论回复
地板
ayb_ice| | 2010-10-26 16:46 | 只看该作者
指针数组

使用特权

评论回复
5
areshan|  楼主 | 2010-10-26 17:13 | 只看该作者
int (*mm[4])(int,int)={max,add,middle,min};指向函数的指针数组!!!!
要是这样,我就定义了4个函数指针,每个函数指针都给了指向的地址。。。。。。。


我想问的是,C语言里,有没有地址够成的数组,像是用函数名构成的数组????????????
像int num[]={0x01,0x02,0x03};一样这样的数组。。。不是用地址给指针赋值!

使用特权

评论回复
6
caoquanli| | 2010-10-26 17:19 | 只看该作者
1# areshan
这个是可以的。你看是这个意思吗?

#include<stdio.h>
typedef void (*point_fun[3])();
void fun1()
{
printf("this is point fun1\n");
}
void fun2()
{
printf("this is point fun2\n");
}
void fun3()
{
printf("this is point fun3\n");
}
void main()
{
point_fun p;
p[0]=fun1;
p[1]=fun2;
p[2]=fun3;
p[0]();
p[1]();
p[2]();

}

我在vc6.0下运行是正确的
}

使用特权

评论回复
7
areshan|  楼主 | 2010-10-26 17:36 | 只看该作者
谢谢你,原来typedef void (*point_fun[3])();可以用point_fun来代替,还没有用过,谢谢你。。。。你写的指向函数的指针数组,然后在给每个数组一个函数名。。。。
6# caoquanli

使用特权

评论回复
8
shell.albert| | 2010-10-26 18:43 | 只看该作者
指针就是地址,数组也是一块地址区域,所以可以定义一块区域用于存放多个指针,即指针数组。

使用特权

评论回复
9
batsong| | 2010-10-26 21:11 | 只看该作者
typedef void (*point_fun[3])();
p[0]=fun1;

但我记得好像返回值和形参与类型定义不同就不可以赋值,有点局限性,并不是所有函数入口都能放进同一个数组

使用特权

评论回复
10
areshan|  楼主 | 2010-10-27 09:06 | 只看该作者
对的,指向函数的指针数组只能是指向一定格式的函数,(返回值,和形参要一样)。 10# batsong

使用特权

评论回复
11
jack_shine| | 2010-10-27 09:20 | 只看该作者
程序还是要可读性要好,通俗易懂些

使用特权

评论回复
12
tanybin| | 2010-10-27 13:07 | 只看该作者
可以。其实现在很多芯片提供的片上IAP,已经集成芯片上的驱动入口地址都是这样处理得。比如LPC11C14上的CAN驱动,就是这样。

使用特权

评论回复
13
cloudreaching| | 2010-10-27 14:01 | 只看该作者
地址也是数据,数据也可以是地址,因此都一样,就是一个叫法而已

使用特权

评论回复
14
lvdou5566| | 2010-10-27 15:56 | 只看该作者
可以

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

728

帖子

0

粉丝