如何返回一个指针值

gaoys1979 2002-11-14 10:10:37
如果不传入参数而直接返回一个在函数内部申明的指针,则函数结束以后结果很可能出错。那么有没有办法不传入参数而返回一个指针值呢?在Windows中CreateWindowEx成功以后的返回值代表了一个窗口,应该是一个地址吧。难道它是在系统保护内存区域分配的一个区域?
我们如果要使用函数得到一个指针,非得在外面定义好再传地址进去?请教高手……
...全文
45 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanghk 2002-11-14
  • 打赏
  • 举报
回复
不太符合编程规范
mrbeaver 2002-11-14
  • 打赏
  • 举报
回复
可以在函数内用new分配内存,返回之,赋给auto_ptr对象,就可以了
auto_ptr对象析构时可释放掉这块内存
zhengguoshan 2002-11-14
  • 打赏
  • 举报
回复
同意:guyanxiao(孤烟)
yuanque 2002-11-14
  • 打赏
  • 举报
回复
char *rtnChar()
{
char *a=(char *)malloc(10);
return a;
}
zxm954712 2002-11-14
  • 打赏
  • 举报
回复
在函数内部要保留内存区域,就是在堆上分配内存区域,当然要用内存分配的冬冬了,如new,malloc,calloc等等,不过要记住,一定要把它们给释放掉,不然会造成内存泄漏的喔
guyanxiao 2002-11-14
  • 打赏
  • 举报
回复
--------------
在函数内部new一个出来,然后再返回这个指针嘛
不过一定记得当函数外部用完了这个指针一定要delete掉
--------------
这中做法好恐怖:),不太符合编程规范吧?
guyanxiao 2002-11-14
  • 打赏
  • 举报
回复
用static变量,在函数内部声明一个static变量,返回这个变量就OK了
flyingdiablo 2002-11-14
  • 打赏
  • 举报
回复
在函数内部new一个出来,然后再返回这个指针嘛
不过一定记得当函数外部用完了这个指针一定要delete掉
这块内存区域,不推荐这样做
lhynew 2002-11-14
  • 打赏
  • 举报
回复
可以这样用
假定T为要返回的指针类型,有成员xx

T* GetAPoint()
{
T a;
return (T*)&a;
}

得到的指针不需要delete,会自动释放。
此时可以直接这样操作:
GetAPoint()->xx
缺点:赋值给另外一个指针则会有问题。解决这个问题的办法可以把a声明成static.

69,382

社区成员

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

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