重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

c语言怎么函数返回字符串,c语言函数如何返回字符串

在C语言中,返回一个字符串的函数应该怎样定义

要返回字符串 需要返回char*类型

因为努力和真诚,有更多的客户和我们聚集在一起,为了共同目标,创新互联建站在工作上密切配合,从创业型企业到如今不断成长,要感谢客户对我们的高要求,让我们敢于面对挑战,才有今天的进步与发展。从网站到微信小程序定制开发,软件开发,成都APP应用开发,十余年企业网站建设服务经验,为企业提供网站设计,网站托管维护一条龙服务.为企业提供成都全网营销,按需网站建设,原创设计,十余年品质,值得您的信赖.

需要注意的是 返回的字符串 不能是该函数的局部变量,否则会导致出错

可以是参数字符串,全局变量,静态局部变量,或者动态分配的内存

比如

char *my_str_cpy(char *d, char *s)

{

char *p=d;

while(*p++=*s++);

return d;//返回参数字符串。 

}

C语言中函数如何返回字符串?

别听 楼上 的 瞎说, 也 别 百度 了, 都是 错 的, 我 告诉 你 正确 答案

函数 中 的 字符 串 在 函数 结束 的 时候 会 自动 被 释放 掉, 所以 即使 返回 char* 指向 的

也 就是 原 函数 字符串 的 地址, 访问 的 是 一个 系统 没有 分配 给 程序 的 内存, 虽然 编译器 不会 报错, 但 语法 绝对 是 错误 的,而且 你 不一定 能 得到 一个 正确 的 结果

三种 解决 方法:

1, struct ret { char a[100]; }; 返回 一个 结构, 结构里面 包含 字符串

2, char* ret = (char *)malloc(100 * sizeof (char)); 在 函数 里 开 一个 动态 的 字符串, 这个 可以 返回, 不过 动态 内存 需要 手动 free 掉

3, 这个 不是 c语言 了, 调用 c++ 里面 的 string 类型, 也是 最简单 的 办法, 省心, 安全

C语言系列之C语言如何返回字符串数组

C语言实现返回一个字符串数组,是没有这种功能的,但是可以用指向数组的指针来实现:

解释:

char **p 这个p就是指向数组的指针,它指向一个数组的起始地址. 

想要引用里面的数组时,直接使用p[i] 即可。

我们知道C语言里面的各种数组,本质上都是指针,并且函数其实也是不能把数组当作参数的,实际上都是把数组的地址传进去了,实际上就是指向数组地址的指针。

实现

这样返回的P就是指向数组的指针了,实际上就是一个字符串数组

函数解释:

函数返回一个字符串数组,实际上就是指向数组的指针,传进去的是返回的数组的大小以及一个字符串数组,用来处理数据用。

c语言怎么返回字符串数组?

C语言返回值不支持返回数组,不过可以通过返回指针类型,用以替代数组。在C语言中,数组大多数时候是可以用指针替代的。

不过需要注意的是,不能够返回在函数内部定义的局部变量数组,因为一旦函数退出,局部变量就会被释放,导致数组指针无效。

可以返回以下几种:

1 全局变量,或者全局变量空间内的一个地址。

2 静态局部变量,或者静态局部变量内部的一个地址。

3 从参数传入的数组/指针变量,或者在其上做的合法偏移。

4 在数组内部动态申请的空间首地址。

C语言可以返回字符串吗?

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

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语言如何返回字符串

new 是动态分配(在堆上分配),你向系统要了 50 B 的内存,如

char* str=new char[50]; // 50 * 1B

堆上分配就是这情况,你不释放(delete一下),它就认为你在用着;不会再给别人用

如果给你的你不用了,或是你把它给忘记了,那就算是内存泄露了、

当然,你程序退出的时候,系统会替你回收、不过这样的习惯不好,你想,如果你写了死循环(操作系统、服务器程序等)、那里面不断滴在内存泄露,你就危险了、后来发现,不知不觉,内存怎么就不够用了,明明自己用的不多啊、、

修改一下:

char* fanhui()

{

static char str[100]; // 局部变量,静态局部变量,它在第一次调用的时候分配,

cin str; // 函数返回了,str的空间还是存在的,也就是不会重复申请、

return str; // 而且,函数外面通过,指针也是可以访问他们的、、

}

char* fanhui()

{

char str[100]; // 局部变量,默认动态局部变量,它在每一次调用的时候分配,

cin str; // 函数返回了,str的空间也就不存在了,他是在,栈,上分配的、

return str; // 函数外面通过,指针想访问?、非法!!!人都不在了,你喊他干嘛啊??

}


网站栏目:c语言怎么函数返回字符串,c语言函数如何返回字符串
文章起源:http://cqcxhl.com/article/hcgeoi.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP