C语言中返回字符串函数的四种实现方法

原创 2010年12月29日 02:54:00

有四种方式:
1。使用堆空间,返回申请的堆地址,注意释放
2。函数参数传递指针,返回该指针
3。返回函数内定义的静态变量(共享)
4。返回全局变量
 
******************以下摘自csdn******************************
 
其实就是要返回一个有效的指针,尾部变量退出后就无效了。

使用分配的内存,地址是有效
char   *fun()
{
        char*   s   =   (char*)calloc(100,   sizeof(char*)   );
        if   (s)
                strcpy   (   s   ,   "abc "   );
        return   s;
}
但这种方式需要注意,必须由使用将将返回的地址free掉

将地址由入参传入
char*   fun(char*s)
{
        if   (s)
              strcpy(s,   "abc ");
        return   s;
}
这种方式调用都要注意给s分配的大小是足够。
可以这样:
char*   fun(char*s,   int   len)
{
        if   (s)
        {
              strncpy(s,   "abc ",   len-1);
              s[len-1]   =   0;
        }
        return   s;
}

或才使用局部静态变量
char*   fun()
{
        static   char   s[100];
        strcpy(s,   "abc ");
        return   s;
}
这种方式需要注意,不要修改返回的这个字符串,由于是共享地址,对它的修改会反应到每个调用者的。可以这样:
const   char*   fun()
{
        static   char   s[100];
        strcpy(s,   "abc ");
        return   s;
}

还有一种是使用全局变量
char   g_s[100];
char*   fun()
{
        strcpy(g_s,   "abc ");
        return   s;
}
同样的,也要注意这个变量可存储的最大空间。

相关文章推荐

C语言中函数返回字符串的四种方法

在讨论着四种方法之前,首先要对函数有一个简单的认识,无论是在形实结合时,还是在return语句返回时,都有一个拷贝的过程。你传进来的参数是个值,自然函数在工作之前要把这个值拷贝一份供自己使用,你传进来...

LINUX C语言中返回字符串函数

有四种方式: 1。使用堆空间,返回申请的堆地址,注意释放 2。函数参数传递指针,返回该指针 3。返回函数内定义的静态变量(共享) 4。返回全局变量   ******************...
  • jurken
  • jurken
  • 2014年10月24日 11:18
  • 884

C++学习笔记之函数如何返回字符串(char型)

/*函数如何返回字符串(char型)1. 由于函数只能返回一个值, 如何返回多个字符? 如返回一个字符串;只要获得中第一个字符的地址, 就可以依次找到其他字符。 因此只要将字符串第一个字符的地址返回,...
  • slf0205
  • slf0205
  • 2009年11月17日 15:56
  • 13107

C++返回字符串函数的几种实现方法

C++返回字符串函数有四种方式: 1。使用堆空间,返回申请的堆地址,注意释放 2。函数参数传递指针,返回该指针 3。返回函数内定义的静态变量(共享) 4。返回全局变量 ...

函数内返回字符数组和字符指针的问题

// 1 #include char *arrstr() {          char arr[]="Hello World !";          return arr; } in...

关于C语言函数返回数组的问题

关于C语言函数返回一个数组 c语言中函数不能直接返回一个数组,但是可以用其他方式实现类似功能,不过需要注意: 1、该数组不能是返回函数的局部变量数组,因为局部变量数组在退出函数后会被释放。 可以是全局...
  • earbao
  • earbao
  • 2016年11月29日 23:03
  • 5400

C/C++ 分割字符并返回字符数组实例

C/C++ 分割字符并返回字符数组实例 //分割字符并返回字符数组 char **GetStrArray(char* s,const char* d) { char* s_s=new c...
  • hsg77
  • hsg77
  • 2012年04月19日 17:31
  • 7222

解决c/c++函数返回局部变量char*的错误

http://blog.csdn.net/maxsky/article/details/41547399 先来一段代码: [cpp] view plaincopyprint? ...
  • earbao
  • earbao
  • 2015年06月04日 11:29
  • 2327

c++ string函数详细返回值及用法!

通过在网站上的资料搜集,得到了很多关于string类用法的文档,通过对这些资料的整理和加入一些自己的代码,就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了! 下面先罗列出string...

实战c++中的string系列--函数返回局部变量string(引用局部string,局部string的.c_str()函数)

当函数返回字符串的时候,我们可以定义返回string和string&。1写一个返回string引用的函数std::string & TestStringReference() { std::s...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言中返回字符串函数的四种实现方法
举报原因:
原因补充:

(最多只允许输入30个字)