简单的字符串问题

wjf8882300 2012-12-18 10:39:34
1、在静态分配的空间会出函数就释放。
2、动态分配的话,要在外部释放。
3、或者由外部先申请完再在外部释放。

有没有什么其他办法把在函数内部产生的字符串返回来?

//对a进行加密,返回加密之后的结果
char* encrypt(char* a)
{
char out[256];
//加密过程
return out;//我如何把这个out返回?这个out不能外部传入,也不能动态分配,也不允许全局变量
}

...全文
175 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhcosin 2012-12-18
  • 打赏
  • 举报
回复
你为啥不允许动态分配?
赵4老师 2012-12-18
  • 打赏
  • 举报
回复
放入CPU内部的寄存器?!
盛夏 2012-12-18
  • 打赏
  • 举报
回复
那你只能定义静态了,你有什么办法你告诉我,我取取经.
大大啊 2012-12-18
  • 打赏
  • 举报
回复
引用 6 楼 wyc6668205 的回复:
比如 C/C++ code?123456status encrypt(char* a,char* out){ //char out[256]; //加密过程 return 成功/失败;//我如何把这个out返回?这个out不能外部传入,也不能动态分配,也不允许全局变量}
楼主说了 out 不能外部传入!!!!
wjf8882300 2012-12-18
  • 打赏
  • 举报
回复
引用 6 楼 wyc6668205 的回复:
比如 C/C++ code?123456status encrypt(char* a,char* out){ //char out[256]; //加密过程 return 成功/失败;//我如何把这个out返回?这个out不能外部传入,也不能动态分配,也不允许全局变量}
你说的是我列举的第三种情况,不能这样。
盛夏 2012-12-18
  • 打赏
  • 举报
回复
比如
status encrypt(char* a,char* out)
{
   //char out[256];
   //加密过程
   return  成功/失败;//我如何把这个out返回?这个out不能外部传入,也不能动态分配,也不允许全局变量
}
盛夏 2012-12-18
  • 打赏
  • 举报
回复
引用 3 楼 wjf8882300 的回复:
引用 2 楼 wyc6668205 的回复:在 char out[256]前加一个static 这个不是多线程安全的吧?多线程调用有问题吗?
有问题. 静态变量占的是固定区域的内存 建议你传进来一个出口参数,返回值定义为状态型
636f6c696e 2012-12-18
  • 打赏
  • 举报
回复
楼主你把三条路都封死了,还让不让人活啊...
wjf8882300 2012-12-18
  • 打赏
  • 举报
回复
引用 2 楼 wyc6668205 的回复:
在 char out[256]前加一个static
这个不是多线程安全的吧?多线程调用有问题吗?
盛夏 2012-12-18
  • 打赏
  • 举报
回复
在 char out[256]前加一个static
wjf8882300 2012-12-18
  • 打赏
  • 举报
回复
C++中用类的话可以做这个,但我这个必须纯C。

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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