void*作为函数返回值到底有什么用

zjtzlqr 2013-02-27 03:36:08
为什么有的函数原型显示函数的返回值是void*
1 void*返回值的函数有什么用
2 能不能举例讲一些void*为返回值的函数的例子
...全文
5044 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
sfd1234 2013-03-04
  • 打赏
  • 举报
回复
一般都是用于 不是很明确,或者因为一些原因,不能做到明确的时候用!
dingqiang107 2013-03-03
  • 打赏
  • 举报
回复
引用 21 楼 haolly 的回复:
在c++中,好像不能将void* 赋值给其他的X* 但在c中却可以,郁闷...
c++当然可以,只是要用static_cast,不能隐式转换。 c++的意思是要你明确自己的意图,不是禁止你这样做。实在不行还有reinterpret_cast呢。
zjtzlqr 2013-03-03
  • 打赏
  • 举报
回复
引用 18 楼 lin5161678 的回复:
引用 17 楼 zjtzlqr 的回复:引用 15 楼 sfd1234 的回复:可以返回任意类型的指针啊!!!!! C/C++ code?12345678910111213141516171819#include "stdio.h" void *hanshu(void); int i = 3; int main(void){ int *ptr; ptr……
非常感谢你 我把文件后缀改成.c就可以了
haolly 2013-03-02
  • 打赏
  • 举报
回复
在c++中,好像不能将void* 赋值给其他的X* 但在c中却可以,郁闷...
wizard_tiger 2013-03-02
  • 打赏
  • 举报
回复
只是返回任意类型的一个指针。
sfd1234 2013-02-28
  • 打赏
  • 举报
回复
可以返回任意类型的指针啊!!!!!
mujiok2003 2013-02-28
  • 打赏
  • 举报
回复
void*,通用指针,可以保存任意类型对象的地址。好处:通用。 弊端:不安全,没有类型信息。 例子:malloc/free, operator new/ opeator delete等内存管理函数, 线程入口函数,bsearch等。
hu7324829 2013-02-28
  • 打赏
  • 举报
回复
返回指针 + 强制转换 可以有无限种可能.
闭着眼刷牙 2013-02-28
  • 打赏
  • 举报
回复
引用 12 楼 ForestDB 的回复:
qsort bsearch malloc 可以更好的理解void *
++
七擒关羽 2013-02-28
  • 打赏
  • 举报
回复
引用 16 楼 zjtzlqr 的回复:
引用 6 楼 studyCBC 的回复:void 类型不需要强制转换,在赋值的时候就默认转换了,所以赋值给不确定的类型的对象时 比较好用 既然这样的话我所有的函数的返回值都弄成void *不是很方便吗
好用 不等于 滥用,但需要增加扩展性的接口可以考虑,如果一些类型明确不建议使用。
lin5161678 2013-02-28
  • 打赏
  • 举报
回复
引用 17 楼 zjtzlqr 的回复:
引用 15 楼 sfd1234 的回复:可以返回任意类型的指针啊!!!!! C/C++ code?12345678910111213141516171819#include "stdio.h" void *hanshu(void); int i = 3; int main(void){ int *ptr; ptr = hanshu(); prin……
对于c语言 any* = void*//成立 void*= any* //就不行 会有警告 另外 分清楚 c语言 和 c++ 你的文件后缀名是cpp吧
zjtzlqr 2013-02-28
  • 打赏
  • 举报
回复
引用 15 楼 sfd1234 的回复:
可以返回任意类型的指针啊!!!!!
#include "stdio.h"

void *hanshu(void);

int i = 3;

int main(void)
{ 
    int *ptr;
	ptr = hanshu();
	printf("%d",*ptr);
}

void *hanshu(void)
{
	int *p = &i;
	(*p) += 1; 
	return p;
}
既然是返回任意类型的指针的话,那么为什么我上面写的这个函数出现error,vc6编译器说cannot convert from 'void *' to 'int *'
zjtzlqr 2013-02-28
  • 打赏
  • 举报
回复
引用 6 楼 studyCBC 的回复:
void 类型不需要强制转换,在赋值的时候就默认转换了,所以赋值给不确定的类型的对象时 比较好用
既然这样的话我所有的函数的返回值都弄成void *不是很方便吗
ForestDB 2013-02-28
  • 打赏
  • 举报
回复
qsort bsearch malloc 可以更好的理解void *
sxax 2013-02-27
  • 打赏
  • 举报
回复
void *p; int *q; p=q; //不会出错的 q=p;//会出错 据说void * p; p++//错的 (char *)p++ //对的,但是现在编译不过了
Code_Talk 2013-02-27
  • 打赏
  • 举报
回复
引用 6 楼 studyCBC 的回复:
void 类型不需要强制转换,在赋值的时候就默认转换了,所以赋值给不确定的类型的对象时 比较好用
++
AnYidan 2013-02-27
  • 打赏
  • 举报
回复
在英文中 , void* 是 generic pointer, 在此之前是用 char*
qq120848369 2013-02-27
  • 打赏
  • 举报
回复
指针存地址。
七擒关羽 2013-02-27
  • 打赏
  • 举报
回复
void 类型不需要强制转换,在赋值的时候就默认转换了,所以赋值给不确定的类型的对象时 比较好用
lin5161678 2013-02-27
  • 打赏
  • 举报
回复
malloc
加载更多回复(4)

69,371

社区成员

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

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