c语言返回字符串函数 c++ 函数返回字符串

C语言可以返回字符串吗?C语言返回字符串有四种方式:1 。使用堆空间,返回申请的堆地址 , 注意释放2 。函数参数传递指针,返回该指针3 。返回函数内定义的静态变量(共享)4 。返回全局变量使用分配的内存,地址是有效 \x0d\x0achar *fun() \x0d\x0a{ \x0d\x0achar* s = (char*)calloc(100, sizeof(char*) ); \x0d\x0aif (s) \x0d\x0astrcpy ( s , "abc " ); \x0d\x0areturn s; \x0d\x0a} \x0d\x0a但这种方式需要注意 , 必须由使用将将返回的地址free掉 \x0d\x0a\x0d\x0a将地址由入参传入 \x0d\x0achar* fun(char*s) \x0d\x0a{ \x0d\x0aif (s) \x0d\x0astrcpy(s, "abc "); \x0d\x0areturn s; \x0d\x0a} \x0d\x0a这种方式调用都要注意给s分配的大小是足够 。\x0d\x0a可以这样: \x0d\x0achar* fun(char*s, int len) \x0d\x0a{ \x0d\x0aif (s) \x0d\x0a{ \x0d\x0astrncpy(s, "abc ", len-1); \x0d\x0as[len-1] = 0; \x0d\x0a} \x0d\x0areturn s; \x0d\x0a} \x0d\x0a\x0d\x0a或才使用局部静态变量 \x0d\x0achar* fun() \x0d\x0a{ \x0d\x0astatic char s[100]; \x0d\x0astrcpy(s, "abc "); \x0d\x0areturn s; \x0d\x0a} \x0d\x0a这种方式需要注意,不要修改返回的这个字符串 , 由于是共享地址,对它的修改会反应到每个调用者的 。可以这样: \x0d\x0aconst char* fun() \x0d\x0a{ \x0d\x0astatic char s[100]; \x0d\x0astrcpy(s, "abc "); \x0d\x0areturn s; \x0d\x0a} \x0d\x0a\x0d\x0a还有一种是使用全局变量 \x0d\x0achar g_s[100]; \x0d\x0achar* fun() \x0d\x0a{ \x0d\x0astrcpy(g_s, "abc "); \x0d\x0areturn s; \x0d\x0a} \x0d\x0a同样的,也要注意这个变量可存储的最大空间 。
在C语言中,返回一个字符串的函数应该怎样定义要返回字符串 需要返回char*类型
【c语言返回字符串函数 c 函数返回字符串】需要注意c语言返回字符串函数的是 返回的字符串 不能是该函数的局部变量c语言返回字符串函数,否则会导致出错
可以是参数字符串,全局变量,静态局部变量,或者动态分配的内存
比如
char *my_str_cpy(char *d, char *s)
{
char *p=d;
while(*p=*s);
return d;//返回参数字符串 。
}
C语言中函数如何返回字符串?别听 楼上 的 瞎说, 也 别 百度 了, 都是 错 的 , 我 告诉 你 正确 答案
函数 中 的 字符 串 在 函数 结束 的 时候 会 自动 被 释放 掉, 所以 即使 返回 char* 指向 的
也 就是 原 函数 字符串 的 地址,访问 的 是 一个 系统 没有 分配 给 程序 的 内存,虽然 编译器 不会 报错 , 但 语法 绝对 是 错误 的,而且 你 不一定 能 得到 一个 正确 的 结果
三种 解决 方法:
1 , struct ret { char a[100];}; 返回 一个 结构, 结构里面 包含 字符串
2,char* ret = (char *)malloc(100 * sizeof (char));在 函数 里 开 一个 动态 的 字符串,这个 可以 返回,不过 动态 内存 需要 手动 free 掉
3,这个 不是 c语言 了 , 调用 c里面 的 string 类型 , 也是 最简单 的 办法, 省心,安全
关于c语言返回字符串函数和c函数返回字符串的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读