C语言 函数返回字符串的四种方法,C语言中返回字符串函数的四种实现方法 2015-05-17 15:00 23人阅读...

分类: UNIX/LINUX C/C++ 2010-12-29 02:54

11954人阅读 评论(1)

收藏

举报

有四种方式:

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;

}

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

随机推荐

mysql临时表的产生

sql执行会生成一个巨大的临时表,当内存放不下时,要全部copy 到磁盘,导致IO飙升,时间开销增大. 额外收获知识收藏如下: 临时表存储 MySQL临时表分为"内存临时表"和&q ...

在Window 下安装Redis数据库

小Alan国庆后就要回深圳找工作了,最近在复习工作所需的相关的技术,今天刚好复习到redis,redis是一个非关系型(NoSql)数据库,采用key-value的方式存储数据,她可以保存字符串(St ...

【javascript基础】1、基本概念

前言 最近迷茫了一段时间,不知道应该从何处开始学习前端知识,好像这种状态已经持续了一年了,天天也在看前端的东西,但是记住的多少或者说在脑中一团糟,没有什么清晰的概念.最近加入了jQuery源码交流群( ...

HTTPS连接的前几毫秒发生了什么——Amazon HTTPS案例分析

转自: http://blog.jobbole.com/48369/ 提示:英文原文写于2009年,当时的Firefox和最新版的Firefox,界面也有很大改动.以下是正文. 花了数小时阅读了如潮的 ...

css选择器分类

css选择器大致可以分为10大类: 1.元素选择器 如:p{} 2.类选择器 如:.xx{} 3.ID选择器 如:#xx{} 4.关联选择器 如:p a{} 5.子元素选择器 如:p>a{} 6 ...

Codeforces Round #292 (Div. 1) B. Drazil and Tiles (类似拓扑)

题目链接:http://codeforces.com/problemset/problem/516/B 一个n*m的方格,'*'不能填.给你很多个1*2的尖括号,问你是否能用唯一填法填满方格. 类似t ...

Jquery 校验文本框只能输入负数、小数、整数

/*   umlzhang    date:2013-09-12   */   //检验只能输入整数,小数和负数    $(function () {          var obj = $(&q ...

全世界最详细的一步一步搭建RAC步骤(一)---安装操作系统RHEL4.6【weber出品】

全文搭建RAC分为3步骤          ...

Cobalt Strike 服务器搭建及使用

Cobalt Strike使用中的一些坑(一) http://www.cnblogs.com/miaodaren/articles/7829793.html cobaltstrike3.8服务器搭建及 ...

Using a ScrollView - RN4

使用滚动条. 1. import import {ScrollView} from "react-native"; 2. Using ... ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值