c return返回字符串

来源:百度知道 编辑:UC知道 时间:2024/05/30 16:42:25
C函数中return能返回一个连接起来的字符串吗??return只能返回1或0或一个常数值吗?如果我想函数返回一个字符串应该怎么办呀??

标准C语言中没有内置字符串类型,字符串实际上是“字符数组”,也就是一个字符串的内存首地址的 char * 的指针类型,例如一个字符串连接函数可以这样写:

char * CatString(const char * s1, const char * s2)
{
int m1,m2; //两字符串长度
m1=strlen(s1); m2=strlen(s2); //求长度
char * s=(char *)malloc(sizeof(char)*(m1+m2+1)); //申请内存空间,多1字节
strcpy(s,s1); //复制第一个字符串
strcpy(s+m1,s2); //复制第二个字符串
return s; //返回结果
}

========回复lcability==========

我看了下,你说的确实是对的,还分2种情况:

对于
p[] = "123";
这样是栈上分配的,

*p = "123";
这个"123"分配在静态存储区,就是程序退出才会销毁的一个区域。不过这样使用函数专门返回这么一个字符串就多此一举了。

楼主说的连接字符串就是rssn的那个方法,返回后要删除指针。

至于返回一个数组名是肯定不行的。

楼上,一楼的
char* str()
{
retrun "string";
}

我觉得应该没有问题,"string" 是一个常数,它不是在栈上分配的,而是专门有一个“常数区”分配。

探讨一下

可以返回

定义一个字符数组c[10],再返回c即可,函数定义的返回值为char*

楼主试试,定义一个字程序为:
char* func
{

}
这样会