社区
C语言
帖子详情
函数返回值是一个字符串,大家有什么好办法?
eyetiger
2002-05-20 03:17:28
函数返回值是一个字符串,大家有什么好办法?
...全文
1906
24
打赏
收藏
函数返回值是一个字符串,大家有什么好办法?
函数返回值是一个字符串,大家有什么好办法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
晨星
2002-05-20
打赏
举报
回复
方法一:在函数内部申请字符串空间:
char* makestring()
{
char *p = new char[strlen("Hello!") + 1];
strcpy(p , "Hello!");
return p;
}
但这样做风格不太好,因为我们需要在函数外部释放函数内部动态申请的资源。
方法二:把字符串首地址传进函数,在函数内处理,不要觉得这个方法不符合你的要求,因为你的要求本身就太霸道。
void f(char *p)
{
//Process p.
……
}
如果担心越界,可以办字符串的长度也作为参数传进函数中,这样做非常安全,难道不比把字符串从函数返回好?
方法三,自定义一个字符串类,重载拷贝构造函数和赋值运算符,还有什么不能返回的?如果在VC中,MFC里已经有了,CString。
CString f()
{
CString s = "Hello!";
return s;
}
调用函数时,只需一个CString对象接受返回的内容就可以了,字符串空间的分配、释放、内容的拷贝都已经做好了,你只要放心的用就可以了,另外,CString还重载了“LPSTR”类型转换符,所以,你也可以把它当成一个一般的字符指针来用。如:
CString s = "Hello";
char s1[6];
strcpy(s1, s);
当然,这只是个例子,没有什么必要。
kof99th
2002-05-20
打赏
举报
回复
返回值是一个字符串的函数,最好还是把字符串指针当参数传过去吧,避免在函数中动态分配内存容易泄露的问题.
kof99th
2002-05-20
打赏
举报
回复
你的linestr可是常量啊,怎么可以写呢?用数组就可以了,char linestr[]="bbbb";试试看行不行.
eyetiger
2002-05-20
打赏
举报
回复
最后是return,没有0
eyetiger
2002-05-20
打赏
举报
回复
#include <iostream.h>
#include <string.h>
void st(char *p)
{
*p='w';
}
void main()
{
char* linestr="bbbb";
st(linestr);
cout<<linestr<<endl;
return 0;
}
出现内存写错误,为什么,怎么改?
superzjx2000
2002-05-20
打赏
举报
回复
加入字符串中有空格怎么办 我认为应该这样
创建一个
typedef struct {char a[...] //存字符串
int n//字符串长度
}str
在函数中new str;
返回 str
由于str在堆中申请 及时退出函数 str也不会消失
Borlandor
2002-05-20
打赏
举报
回复
char * func()
{
char * p = (char *)malloc(....);
......
return p;
}
......
{
char* s;
s = func();
...
free(s);//must free it!!!!!!
}
Januarius_
2002-05-20
打赏
举报
回复
直接返回一个string对象吧,我是了一下,好像没什么问题
#include <iostream>
#include <string>
using namespace std;
string f(const string &a) {
return a;
}
int main() {
string str("hello");
string tr;
tr = f(str);
cout<<tr<<endl;
return 0;
}
fang_jb
2002-05-20
打赏
举报
回复
那个string1属于隐含型的错误,运行时的结果不确定,
会出错也可能不会,由于返回的是local变量的地址,行为未定义。
看看linux实现的源码,我手头没有,它的实现好象不是static,
而且工作良好:)
richard_hu
2002-05-20
打赏
举报
回复
两种:第一、返回地址(指针);第二、用指针做参数
zw741027
2002-05-20
打赏
举报
回复
我一般喜欢利用参数传地址的方式的
void func(char * para)
{
}
fangrk
2002-05-20
打赏
举报
回复
把保存结果的地址作为参数列表放到函数中去,比如
char * getDigital(const char*source,char*dest)
{ char*r=dest;
while(*source){
if(*source>='0'&&*source<='9')
*(dest++)=*source;
++source;
}
*dest='\0';
return r;
}
fei1703
2002-05-20
打赏
举报
回复
char *string1="i love you!"为字符窜常量,应该是全局变量;
我觉得在里面分配方便
fang_jb
2002-05-20
打赏
举报
回复
有一些时候可以这样做
char *func()
{
static char sz[10];
...
return sz;
}
{
char tt[10];
strcpy(tt,func());
//tt = func(); 如果你在调用下一次func之后再使用tt,static变量sz值可能改变了
}
eyetiger
2002-05-20
打赏
举报
回复
wangli50(wl):
函数char *zhifu()返回后,系统不收回string1的空间吗?
这个小程序运行是正确的,可我还是不明白
eyetiger
2002-05-20
打赏
举报
回复
wangli50(wl):
函数char *zhifu()返回后char *string1,系统不收回string1的空间吗?
sbg
2002-05-20
打赏
举报
回复
可以返回一个字符指针,或函数参数中传入需要返回的字符指针
返回一个char *类型的值,指向字符串的首地址!
eyetiger
2002-05-20
打赏
举报
回复
如果我调用xuying的函数char* func()
如char *a=func();
之后要delete a ,是不是?
wangli50
2002-05-20
打赏
举报
回复
通过返回一个string的首地址就可以用了。
#include <iostream.h>
char *zhifu()
{
char *string1="i love you!";
return string1;
}
void main()
{
char *string2=zhifu();
cout<<string2;
}
huangwu007
2002-05-20
打赏
举报
回复
我觉得在函数内动态分配不是很好的办法,容易造成内存泄漏
还是在函数外分配好空间,作为参数传入比较好
当然是个人意见
加载更多回复(4)
c语言
函数
返回值
可以是
字符串
吗,
函数
返回值
可以是
字符串
吗
c语言中
函数
返回值
可以是数组、
字符串
和结构体吗?因为在C语言中
函数
不能返回数组,但
字符串
是存储在字符数组中的,所以能C语言中实现
函数
返回
字符串
,首先要确定
函数
返回的
字符串
地址的来源,一般分为四种方式:
函数
形参带进来的地址 静态局部变量地址 局部变量地址,必须在
函数
中用malloc()
函数
进行地址分配 采用全局变量地址 参考代码: void func1( char *s )java中
函数
的
返回值
能...
关于
字符串
比较
函数
strcmp
返回值
的问题
字符串
比较
函数
strcmp 格式: strcmp(字符数组名1,字符数组名2) 功能:按照ASCII码顺序比较两个数组中的
字符串
,并由
函数
返回值
返回比较结果。
字符串
1=
字符串
2,
返回值
=0;
字符串
2〉
字符串
2,
返回值
〉0;
字符串
1〈
字符串
2,
返回值
〈0。 本
函数
也可用于比较两个
字符串
常量,或比较数组和
字符串
常量。 ANSI标准规定,
返回值
有正数,负
scanf库
函数
的
返回值
scanf
返回值
在多种输入下以及多种格式
字符串
的情况
scanf
函数
的
返回值
1. scanf
函数
是有
返回值
的,它的
返回值
可以分成三种情况 1) 正整数,表示正确输入参数的个数。 例如执行 scanf(“%d %d”, &a, &b); 如果用户输入”3 4”,可以正确输入,返回2(正确输入了两个变量); 如果用户输入”3,4”,可以正确输入a,无法输入b,返回1(正确输入了
一个
变量)。 当scanf("%s",s)正常读取到
一个
字符串
时(不论串的长短如何),scanf()
函数
的值总是1。 2) 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果
单向双向V2G 环境下分布式电源与电动汽车充电站联合配置方法(Matlab代码实现)
内容概要:本文提出了一种在单向与双向V2G(Vehicle-to-Grid)并行环境下,对分布式电源与电动汽车充电站进行联合优化配置的方法,并提供了完整的Matlab代码实现。研究综合考虑了分布式光伏、储能系统以及电动汽车充放电行为对配电网的影响,构建了
一个
多目标优化模型,旨在实现电源、负荷与电网之间的协同规划,提升系统运行的经济性、稳定性和新能源消纳能力。该方法通过优化分布式电源的选址与定容、充电站布局及V2G调度策略,有效降低网络损耗、改善电压质量,并增强配电网对高渗透率电动汽车的承载能力。文中详细阐述了模型构建、求解算法设计、仿真验证流程及结果分析,适用于城市复杂用电场景下的能源基础设施规划与运行优化。; 适合人群:具备电力系统、可再生能源、智能电网等相关专业背景,熟悉Matlab编程与优化算法,从事科研或工程应用的研究生、高校教师及电力行业技术人员;特别适合从事电动汽车与电网互动、分布式能源规划、综合能源系统优化等方向的研究人员。; 使用场景及目标:①用于高校与科研机构开展V2G与分布式能源协同优化的课题研究与论文复现;②支撑电网公司、城市规划部门在充电基础设施布局与电网扩容改造中的科学决策;③为撰写高水平SCI/EI期刊论文提供可复现的技术路线、算法框架与仿真代码支持。; 其他说明:资源包含完整Matlab源代码与仿真案例,建议结合文中模型结构、参数设置与优化目标进行调试学习,可进一步拓展至不确定性建模、多时间尺度优化、鲁棒优化等高级场景,以提升方法的实际应用价值与学术深度。
C语言
70,038
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章