关于C语言的字符串问题

一个字符串是否可以转换为一个函数指针?比如有个函数intfun(),现在我定义一个串char*str="fun",再定义一个函数指针,int(*FUN)(),本来,正常的... 一个字符串是否可以转换为一个函数指针?

比如有个函数int fun(),现在我定义一个串char* str = "fun",再定义一个函数指针,int (*FUN)(),本来,正常的调用是FUN = fun,即可,但我现在的需求是能够将FUN = fun中的“fun”用字符串str来代替,该如何实现诶?
我的关键是函数fun并不是我预先定义好的,而是我后面加上去的,比如:
typedef void (*Fun)()
int main()
{
Fun fun[10];
char *str;
int i = 0;
for (i;i <10; i++)
{
str = value; //value是我已某种方式循环获得的函数名称,
//比如我是从某张表中获得的函数名称
fun[i] = str;
}

i = 0;
for (i; i <n; i++)
{
fun[i]();
}
}
展开
 我来答
niluanxy
2012-05-11 · 超过26用户采纳过TA的回答
知道答主
回答量:114
采纳率:0%
帮助的人:75.3万
展开全部
应该不可以,函数指针本质传递的是这个函数在内存中的起始地址,而字符串不可以弄。不过高级语言分配的时候,会自动建立一个叫做 符号表 的数据结构,里面有这个程序所有的声明标识符和其地址、大小等信息,你如果可以找到访问这个表的方法,就能实现你的这个想法了。不过我也只知道有这个东西,却不知道如何去访问,现在的知识还是太少了。
michael_21st
2012-05-11 · 超过27用户采纳过TA的回答
知道答主
回答量:111
采纳率:100%
帮助的人:63.4万
展开全部
char* str = "fun",就表示str是一个常量指针,指向是存储“fun”字符串的地址;
int (*FUN)(),表示FUN函数指针,FUN = fun,表示将FUN指向fun的地址;
综上,要实现你的目地,就要使FUN指向fun地址就ok,故str指向fun不就ok了么,
那么两种方法,1,定义str就让指向fun地址。void *str=fun;
2,给fun开辟FUN空间,讲fun地址赋给str
测试代码:
// 第一种
#include <stdio.h>

void fun()
{
printf("Test\n");
}

void (* FUN)();

int main()
{
void *str=fun;
FUN=str;
FUN();
}
第二种
#include <stdio.h>

void fun()
{
printf("Test\n");
}

void (* FUN)();

int main()
{
void *str;
str=(void *)malloc(sizeof(void *));
str=fun;
FUN=str;
FUN();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
胜凭秋o
2012-05-11 · TA获得超过165个赞
知道小有建树答主
回答量:288
采纳率:0%
帮助的人:153万
展开全部
有2个变通的方法。

1个是:
另建一个函数,然后在这个函数中判断str的内容,如果是"fun03",那么返回fun03函数的地址。懂了没?

-------------------------------------------------------------------------------------------------------------------
那你学学GetProcAddress吧。自己百度
-------------------------------------------------------------------------------------------------------------------
还有,你以后用追问。不然我不舒服。
追问
哈哈
谢谢啊
动态库是个好办法,不过我是C,不是VC,所以只能用ldopen和ldsys函数了,
以及实现了,棒极了!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式