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语句返回时,都有一个拷贝的过程。你传进来的参数是个值,自然函数在工作之前要把这个值拷贝一份供自己使用,你传进来...
  • fengyuzhiren
  • fengyuzhiren
  • 2017年03月05日 17:03
  • 1018

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

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

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

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

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

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

字符串方法返回值分类

一、返回数字类型: indexof(); 通过字符查找父字符串中的位置 charCodeAt(); 返回ACS码 lastindexof(); search 通过字符查找父字符串中的位置 二、返...
  • qq_21109153
  • qq_21109153
  • 2016年04月14日 18:34
  • 504

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

// 1 #include char *arrstr() {          char arr[]="Hello World !";          return arr; } in...
  • z0901214051
  • z0901214051
  • 2015年10月15日 14:59
  • 313

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

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

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

当函数返回字符串的时候,我们可以定义返回string和string&。1写一个返回string引用的函数std::string & TestStringReference() { std::s...
  • wangshubo1989
  • wangshubo1989
  • 2015年12月13日 21:48
  • 6779

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

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

关于C++中的函数返回局部string的问题

函数返回局部变量string的时候能不能被引用? 前两天被同事突然问道这个问题,见到string一时糊涂了,最初学习C++的时候,就说不能引用局部变量,现在怎么糊涂了呢?呵呵   今天想了下,原来是被...
  • pecywang
  • pecywang
  • 2013年09月08日 22:58
  • 7099
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言中返回字符串函数的四种实现方法
举报原因:
原因补充:

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