C语言如何返回字符串

netbooting 2013-11-18 02:52:41
我了解两种方法

一、将一个字符指针或数组作为参数传入调用方法。
这种方式有点麻烦,要多声明一个参数,不太符合使用其它语言的习惯,另外不知道这种方式能不能动态扩充字符串大小。

二、在方法中声明一个静态字符数组,动态分配内存,返回这个数组
这种方式导致字符串的生存周期为程序运行期,浪费内存。


不知道我理解的对不对,大神指点,一般都用哪种方法??
...全文
493 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
axzx123132 2013-11-19
  • 打赏
  • 举报
回复
char s[buffer_size]; foo(s, buffer_size); 推荐这种。
AnYidan 2013-11-19
  • 打赏
  • 举报
回复
没有十全十美的方法,合适的最好
cjfdqchwhj 2013-11-18
  • 打赏
  • 举报
回复
楼主你说的两种方法都是可以的。
ForestDB 2013-11-18
  • 打赏
  • 举报
回复
char s[buffer_size]; foo(s, buffer_size); 推荐这种。
junlinfushi 2013-11-18
  • 打赏
  • 举报
回复
引用 6 楼 max_min_ 的回复:
两种方法都可以!都有用到,看具体需求吧! 如果可以改结构的话,无疑传参数,传地址会比较好好点 动态分配的话,容易产生内存碎片,而且费时! [quote=引用 楼主 netbooting 的回复:] 我了解两种方法 一、将一个字符指针或数组作为参数传入调用方法。 这种方式有点麻烦,要多声明一个参数,不太符合使用其它语言的习惯,另外不知道这种方式能不能动态扩充字符串大小。 二、在方法中声明一个静态字符数组,动态分配内存,返回这个数组 这种方式导致字符串的生存周期为程序运行期,浪费内存。 不知道我理解的对不对,大神指点,一般都用哪种方法??
[/quote]+1
ggglivw 2013-11-18
  • 打赏
  • 举报
回复
一般有固定的内存记录字符串,返回const指针来用
max_min_ 2013-11-18
  • 打赏
  • 举报
回复
两种方法都可以!都有用到,看具体需求吧! 如果可以改结构的话,无疑传参数,传地址会比较好好点 动态分配的话,容易产生内存碎片,而且费时!
引用 楼主 netbooting 的回复:
我了解两种方法 一、将一个字符指针或数组作为参数传入调用方法。 这种方式有点麻烦,要多声明一个参数,不太符合使用其它语言的习惯,另外不知道这种方式能不能动态扩充字符串大小。 二、在方法中声明一个静态字符数组,动态分配内存,返回这个数组 这种方式导致字符串的生存周期为程序运行期,浪费内存。 不知道我理解的对不对,大神指点,一般都用哪种方法??
赵4老师 2013-11-18
  • 打赏
  • 举报
回复
参考C语言库函数所用方法。
破碎的泡泡 2013-11-18
  • 打赏
  • 举报
回复
第一种方法比较好
zmn0079 2013-11-18
  • 打赏
  • 举报
回复
函数内划分内存有释放问题 静态数组有调用问题 还是传入参数好 之所以和其他语言不一样,是因为C语言算不得高级语言
yu.sang 2013-11-18
  • 打赏
  • 举报
回复
类似第一种,传入一个缓冲区,在函数里,对缓冲区填值。这种方式不能动态扩充字符串缓冲区大小,所以传入的缓冲区一定要足够大否则会溢出导致错误,最好将缓冲区的大小也传入函数。 如果需要在函数里分配空间,这样需要将实参的指针的地址传入方法,即二级指针。 int func(char **str) { *str = malloc(size); }
derekrose 2013-11-18
  • 打赏
  • 举报
回复
反正只要注意不返回局部变量都行

70,023

社区成员

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

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