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

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


1、使用分配的内存,地址是有效 

char   *fun()
{
char* s = (char*)calloc(100, sizeof(char*) );
if (s)
strcpy ( s , "abc " );
return s;
}

但这种方式需要注意,必须由使用将将返回的地址free掉 



2、将地址由参数传入 

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;
}



3、使用局部静态变量 

char*   fun()
{
static char s[100];
strcpy(s, "abc ");
return s;
}

这种方式需要注意,不要修改返回的这个字符串,由于是共享地址,对它的修改会反应到每个调用者的。可以这样:

const   char*   fun()
{
static char s[100];
strcpy(s, "abc ");
return s;
}



4、还有一种是使用全局变量 
char   g_s[100];
char* fun()
{
strcpy(g_s, "abc ");
return s;
}

同样的,也要注意这个变量可存储的最大空间。

C语言中返回字符串函数的四种实现方法的更多相关文章

  1. C语言中返回字符串函数的四种实现方法 2015-05-17 15:00 23人阅读 评论(0) 收藏

    C语言中返回字符串函数的四种实现方法 分类: UNIX/LINUX C/C++ 2010-12-29 02:54 11954人阅读 评论(1) 收藏 举报 语言func存储 有四种方式: 1.使用堆空 ...

  2. 用R语言实现对不平衡数据的四种处理方法

    https://www.weixin765.com/doc/gmlxlfqf.html 在对不平衡的分类数据集进行建模时,机器学**算法可能并不稳定,其预测结果甚至可能是有偏的,而预测精度此时也变得带 ...

  3. C语言中结构体(struct)的几种初始化方法

    转自https://www.jb51.net/article/91456.htm     本文给大家总结的struct数据有3种初始化方法 1.顺序 2.C风格的乱序 3.C++风格的乱序 下面通过示 ...

  4. 函数的四种调用模式.上下文调用.call.apply

    闭包:函数就是一个闭包,一个封闭的作用域;         返回函数,要返回多个函数就用一个对象封装一下,         立即执行函数+return 回调函数   JS动态创建的DOM,不会被搜索引 ...

  5. C语言中格式字符串

    C语言中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项. 一.类型 我们用一定的字符用以表示输出数据的类型,其格式符和意义下表所示: 字符  ...

  6. C语言中的自定义函数

    C语言中可以使用系统函数也可以使用自己的函数,就是自定义函数 自定义函数分为四种 第一种:无参无返回值的 函数的声明 void sayH(); 函数的实现 void sayH(){ printf(&q ...

  7. C语言中关于scanf函数的用法

    scanf()函数的控制串 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化 ...

  8. Python3中的字符串函数学习总结

    这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...

  9. 【转】Java中字符串中子串的查找共有四种方法(indexof())

    原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int ...

随机推荐

  1. javascript实现可编辑的下拉框

    曾经遇到过一个需求的情况是这样的,我们提供给用户的输入框的可选择项只能满足用户的大部分情况的选择,但是有时候会遇到一些用户想要输入的数据是下拉项中所没有的,而用户不希望改变下拉项为输入框模式,需要说如 ...

  2. nyoj 2 括号配对问题

    括号配对问题 时间限制:3000 ms  |            内存限制:65535 KB 难度:3   描述 现在,有一行括号序列,请你检查这行括号是否配对.   输入 第一行输入一个数N(0& ...

  3. ionic 安装教程

    2015-10-08:国庆回来发现有新版本了,特意更新结果命令失效了,然后重新装吧,结果也失败多次 大概6-7次左右,然后系统是win10,可以启用管理员命令窗口进行安装,第二次成功了!   1.准备 ...

  4. postgresql 字符串拼接"||“的使用

    不过注意这里的只有postgresql可以使用,其他数据库不明. select name || remark as newname from mytable where name like '%tes ...

  5. NET环境下的未处理异常(unhandled exception)的解决方案

    NET环境下的未处理异常(unhandled exception )的解决方案 .Net 框架提供了非常强大的异常处理机制,同时对一些非托管代码很难控制的系统问题比如指针越界,内存泄漏等提供了很好的解 ...

  6. jdk在windows中的配置

    1.下载jdk(java developer kit),其内部包含jre(java runtime environment): 安装解压缩到一盘内,如:G:\Program Files\Java: 2 ...

  7. C#中2、8、16进制 有符号转换10进制正负数

    曾经让我苦想的其他进制转有符号整型问题,结果自己想到方法解决后才发现原来如此简单. 1.Int16(2个byte长度 ) : 方法 :Convert.ToInt16(进制编码,进制) a.16进制转1 ...

  8. UVA 11995 I Can Guess the Data Structure!(ADT)

    I Can Guess the Data Structure! There is a bag-like data structure, supporting two operations: 1 x T ...

  9. 通过shell脚本实现代码自动化部署

    通过shell脚本实现代码自动化部署 一.传统部署方式及优缺点 1.传统部署方式 (1)纯手工scp (2)纯手工登录git pull.svn update (3)纯手工xftp往上拉 (4)开发给打 ...

  10. tomcat server.xml配置文件 解析

      把服务拆分出来了.      前几天我也进行了拆分.可是当时服务起不来所以我想会不会有什么设置,使得这个服务在主机中只能启一个.然后我又找了一台服务器,也把代码放了进去.结果仿佛是我料想到的样子, ...