定义一个函数指针数组,返回值为void *型,这样有问题吗?

jldream110 2012-08-12 10:01:21


void * name_func_1(int type)
{

return NULL;
}
void *(*name_pfunc[])(int)=
{
name_func_1,
name_func_2,
name_func_3
};




定义一个函数指针数组,返回值为void *型,这样有问题吗?
...全文
484 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
DataChat.Club 2012-08-12
  • 打赏
  • 举报
回复
void *

只要是指针就行,不管啥类型的!
KID 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

void *就是所谓的万能指针了

LZ想定义函数指针建议用typedef,可读性好

例如 typedef void* (*FUNC)(int);

FUNC pFun[] = {name_func_1,name_func_2,name_func_3};
[/Quote]
++
qq120848369 2012-08-12
  • 打赏
  • 举报
回复
楼主这样理解雷死众人 -_-
dickbarry 2012-08-12
  • 打赏
  • 举报
回复
void *就是所谓的万能指针了

LZ想定义函数指针建议用typedef,可读性好

例如 typedef void* (*FUNC)(int);

FUNC pFun[] = {name_func_1,name_func_2,name_func_3};
沭水河畔 2012-08-12
  • 打赏
  • 举报
回复
可以。内存操作函数的返回值就是void *。
比如,memcpy,memmove,malloc等。
IVERS0N 2012-08-12
  • 打赏
  • 举报
回复
没问题
zyq5945 2012-08-12
  • 打赏
  • 举报
回复
没有,但void * name_func_1(int type)不能返回栈指针(临时变量指针),可以返回new和malloc分配的指针,和全局变量的指针,new和malloc分配的指针要记得释放就行了。
tanmeining 2012-08-12
  • 打赏
  • 举报
回复
你是想用函数指针数组?
jldream110 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

引用 9 楼 的回复:
引用 6 楼 的回复:

楼主这样理解雷死众人 -_-


哈 怎么雷死众人了, 我的问题前面有些人理解错了,我就是问,我定义了一个函数指针数组,其中的每个函数的返还值,是一个指针型(用于返回其它函数地址),我有的需要返回的是有用的全局指针,但有些不需要的 我想直接返回NULL, 问这个问题是因为用sourceinsight时,我这么定义后,函数的颜色没有变……
[/Quote]

不是吗?
AnYidan 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 6 楼 的回复:

楼主这样理解雷死众人 -_-


哈 怎么雷死众人了, 我的问题前面有些人理解错了,我就是问,我定义了一个函数指针数组,其中的每个函数的返还值,是一个指针型(用于返回其它函数地址),我有的需要返回的是有用的全局指针,但有些不需要的 我想直接返回NULL, 问这个问题是因为用sourceinsight时,我这么定义后,函数的颜色没有变,我怕有什么问题。
[/Quote]

你的代码是这个意思吗?
DataChat.Club 2012-08-12
  • 打赏
  • 举报
回复
一般情况下,typedef用于简洁地表示指向其他东西的指针。

比如:signal()函数的声明:
void (*signal(int sig, void (*func)(int)))(int);


用typedef简化下:
typedef void(*ptr_to_func) (int);
ptr_to_func signal(int, ptr_to_func);


《c专家编程》

就是图个简洁。。
dickbarry 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
我一直觉得typedef 没啥用处,原来看着挺明白的,用了这东西,感觉看不到原型了,不舒……
[/Quote]

合理使用能够提高代码质量

对于纯C语言的代码,会看到大量的typedef
jldream110 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

void *就是所谓的万能指针了

LZ想定义函数指针建议用typedef,可读性好

例如 typedef void* (*FUNC)(int);

FUNC pFun[] = {name_func_1,name_func_2,name_func_3};
[/Quote]
我一直觉得typedef 没啥用处,原来看着挺明白的,用了这东西,感觉看不到原型了,不舒服。不知道大家都怎么看
jldream110 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

楼主这样理解雷死众人 -_-
[/Quote]

哈 怎么雷死众人了, 我的问题前面有些人理解错了,我就是问,我定义了一个函数指针数组,其中的每个函数的返还值,是一个指针型(用于返回其它函数地址),我有的需要返回的是有用的全局指针,但有些不需要的 我想直接返回NULL, 问这个问题是因为用sourceinsight时,我这么定义后,函数的颜色没有变,我怕有什么问题。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧