C语言:函数返回字符串的四种方法 您所在的位置:网站首页 获取字符串的个数的方法是 C语言:函数返回字符串的四种方法

C语言:函数返回字符串的四种方法

2024-07-10 18:13| 来源: 网络整理| 查看: 265

转载连接:

1.https://blog.csdn.net/turkeyzhou/article/details/6104135#comments

2.https://www.cnblogs.com/qingergege/p/6496683.html

四种返回字符串的方法:

1、 将字符串指针作为函数参数传入,并返回该指针。

2、 使用malloc函数动态分配内存,注意在主调函数中释放。

3、 返回一个静态局部变量。

4、 使用全局变量。

详细解释:

方法一:将字符串指针作为函数参数传入,并返回该指针。

典型的strcpy()函数应该就是采用的这种方法,第一个参数为指向目的字符串的指针,返回值也为这个指针。

复制代码 char* strcpy(char* des,const char* source)   {   char* r=des; assert((des != NULL) && (source != NULL));  while((*r++ = *source++)!='\0');  return des;   }

方法二:使用malloc函数动态分配,但是一定要注意在主调函数中将其释放,应为malloc动态分配的内存位于堆区,而堆区的内存是要程序员自己释放的。

一个例子如下:

复制代码 #include #include #include char * retstring(); int main() { char * name2; name2 = retstring(); printf("%s\n",name2); //记住一定要用free释放,否则会造成内存泄露 free(name2); return 0; } char * retstring() { char * name; name = (char *)malloc(10); strcpy(name,"张汉青"); return name; }

方法三:返回一个静态局部变量。

一个例子如下:

复制代码 #include #include #include char * retstring(); int main() { char * name2; name2 = retstring(); printf("%s\n",name2); return 0; } char * retstring() { static char name[10]; strcpy(name,"张汉青"); return name; }

这种方法有一个问题: 由于采用了静态局部变量(位于静态区,程序结束时由系统进行释放),这就导致,如果多次调用这个函数,下一次调用会将上一次调用的结果覆盖掉。

C语言中的库函数,tmpnam()函数、getenv()函数等应该都是采用的这种方法,这也就是为什么,使用这样的函数的时候应该立即将返回结果拷贝一份的原因。

方法四: 使用全局变量。

一个例子如下:

char g_s[100]; char* fun() { strcpy(g_s, "abc "); return g_s; }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有