C/C++之函数返回值为指针或者是引用时常见错误总结

举报
chenyu 发表于 2021/07/27 01:53:09 2021/07/27
【摘要】 1、说明        函数如果是指针或则引用的返回,一般全局变量、局部静态变量、局部动态分配内存的变量可以使用作为函数的返回值,局部变量不行,因为局部变量函数调用完会自动销毁内存,这个时候返回的指针或则引用就有问题了。     2、展示代码   #include <i...

1、说明

       函数如果是指针或则引用的返回,一般全局变量、局部静态变量、局部动态分配内存的变量可以使用作为函数的返回值,局部变量不行,因为局部变量函数调用完会自动销毁内存,这个时候返回的指针或则引用就有问题了。

 

 

2、展示代码

 


  
  1. #include <iostream>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. using namespace std;
  5. string& f1(const string &s)
  6. {
  7. static string result = s;
  8. return result;
  9. }
  10. string f2(const string &s)
  11. {
  12. string result = s;
  13. return result;
  14. }
  15. string &f3(const string &s)
  16. {
  17. string *p = new string;
  18. *p = s;
  19. return *p;
  20. }
  21. int *f4()
  22. {
  23. int a = 10;
  24. return &a;
  25. }
  26. int *f5()
  27. {
  28. static int a = 10;
  29. return &a;
  30. }
  31. int *f6()
  32. {
  33. int *a = (int *)malloc(sizeof(int) * 10);
  34. *a = 10;
  35. *(a + 1) = 11;
  36. return a;
  37. }
  38. int &f7()
  39. {
  40. int *a = (int *)malloc(sizeof(int) * 10);
  41. *a = 10;
  42. *(a + 1) = 11;
  43. return *a;
  44. }
  45. int &

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/64128702

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。