C语言可以返回字符串吗?可以的话返回值类型是什么呢?能否举个例子。谢谢

 我来答
刘刘1234561
推荐于2018-02-28 · TA获得超过311个赞
知道小有建树答主
回答量:167
采纳率:0%
帮助的人:133万
展开全部
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;
}
同样的,也要注意这个变量可存储的最大空间。
linshaolie
2012-12-28 · TA获得超过434个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:106万
展开全部
可以的。。用char *做为返回类型。。。其实也就是char型数组。。。
如:
char * printHello(){
char * a = "Hello" ;

return a ;

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风灬清灬云淡
2012-12-28 · TA获得超过308个赞
知道答主
回答量:77
采纳率:0%
帮助的人:53.9万
展开全部
可以的,函数类型定为char *,返回类型是char数组的数组名,也就是首地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式