//对于数组来说,它是一个局部变量,是放在栈里面的,函数返回之后,变量被销毁,内存被回收。
#include <stdio.h>char* get_str()
{char str[] = {"hello"}; //错误结果return str;
}
int main()
{char* p = get_str();printf("%s/n", p);return 0;
}【解决方案】
====================(1)用字符串常量指针代替局部变量的数组名
//str指针,其值是一个常量,而常量是放在数据段里面的,即便函数返回了,数据段里面的常量数据也还会在,直到程序结束才会消失
#include <stdio.h>
char* get_str()
{char *str = {"hello"}; //正确结果,因为str指向字符串常量return str;
}
int main()
{char* p = get_str();printf("%s/n", p);return 0;
}
(2)把数组声明为全局的变量
(3)使用静态数组,即static char str[] = {"hello"};
(4)最好的解决方案:在主函数中申请空间,调用函数进行字符串的赋值操作,最后在主函数中释放申请的空间。
#include <iostream>
using namespace std;void f(char* buffer, int size)
{strncpy(buffer,"ABCD",size);
}
int main()
{int size = 100;char *buffer = (char*)malloc(size); //分配buffer空间f(buffer,size); //调用函数,把指定size长度的字符串赋值给buffercout<<buffer<<endl;free(buffer); //释放buffer空间return 0;
}

错误:返回局部变量数组名 \ 解决方案相关推荐

  1. C语言-数组名真的不是指针

    文章目录 1 前言 2 关于一维数组 3 sizeof运算符和自增运算符 4 数组名也不是常量指针 5 总结 1 前言 参照我之前的两篇文章: 二维数组做函数的参数 动态创建二维数组 事实告诉我们,二 ...

  2. 函数的返回值——数组返回

    在C语言中,首先来对函数的返回值来温习一下: 函数调用使主调函数得到一个确定的值,这就是函数的返回值.函数的返回值是通过return 语句获得的. 那我们来提一个这样的问题,如果是一个数组通过排序后, ...

  3. 数组名不等于指针---sizeof()函数求数组大小错误问题

    前言: 今天在项目中需要求采样点的数量并且遍历,采样点用数组存储,自定义了一个函数想要用sizeof求其长度,然后遍历,结果失败了,查阅之后发现以下问题: 在main函数中,sizeof是可以正常工作 ...

  4. C++函数返回局部变量

    转自:https://www.cnblogs.com/fanhaha/p/7117766.html 原因:返回值是拷贝值,局部变量的作用域为函数内部,函数执行结束,栈上的局部变量会销毁,内存释放. 可 ...

  5. C语言的那些秘密之---函数返回局部变量

    一般的来说,函数是可以返回局部变量的. 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了.因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错.但是如果返回的是局部变量的地 ...

  6. 深入探究函数返回局部变量

    一般的来说,函数是可以返回局部变量的. 局部变量的作用域 只在函数内部,在函数返回后,局部变量的内存已经释放了.因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错.但是如果返回的是局部变量的 ...

  7. 总结:数组名和指针完全是两码事

    大家经常接触到诸如:"数组名可以当作指向数组首元素的指针用"."指针可以用数组下标方式进行访问"这些事实,所以数组和指针的概念经常被混淆,其实数组和指针是完全不 ...

  8. C语言函数不能返回局部变量的地址

    在C中,正常情况下,我们只能从函数中返回一个值.但在很多情况下,我们需要从函数中返回多个值,此时使用数组或指针能够很好地完成这样的任务.这里是一个示例.这个程序使用一个整型数组作为参数,并将数组元素的 ...

  9. C语言的那些秘密之---函数返回局部变量(转)

    原文地址:http://blog.csdn.net/haiwil/article/details/6691854/ 一般的来说,函数是可以返回局部变量的. 局部变量的作用域只在函数内部,在函数返回后, ...

最新文章

  1. RegularExpressions(4) RegularExpressions 成员(一)
  2. 大年初五,Python、Go、C...你最爱用哪种语言?
  3. php rdkafka实例,kafka 消息队列 php-rdkafka扩展示例
  4. ASP.NET Core 中文文档 第一章 入门
  5. tcpdump 抓二层包_可能是我见过的最简单易懂且实用的 TCPDump 和 Wireshark 抓包及分析教程!( 强烈建议收藏 )...
  6. nodejs学习---1、命令行和环境变量
  7. c++ set 删除子集_Python基础数据类型「set」
  8. 【渝粤教育】国家开放大学2018年春季 0704-22T民法基础与实务 参考试题
  9. <PCI-E> PCI-E的 x1/x4/x8/x16 四种插槽区别
  10. python读txt写入excel_python实现读Excel写入.txt的方法
  11. sql server 使用 top WITH TIES
  12. 老博客里的另一篇文章《自由与爱情》,实际是一句名言的中英文对照~
  13. python两个表格相同数据筛选_python筛选出两个文件中重复行的方法
  14. 雷电三接口有什么用_三坐标为什么用汽浮轴承?
  15. 51.com新版上线 正式推出开放平台
  16. laravel教程 第一章安装laravel
  17. IDE输入import语句自动消失
  18. Lect4_MC_TD_Model_free_prediction
  19. Week of 3.21
  20. 尝试解决cocos2dx字体模糊时的一点收获

热门文章

  1. 浅谈主动学习(Active Learning)
  2. Python/WSGI 应用快速入门--转
  3. pyDes 实现 Python 版的 DES 对称加密/解密--转
  4. Basic Example of JMX Technology--转载
  5. Linux 的启动流程--转
  6. C语言中嵌入正则表达式
  7. 程序员如果也能像C罗一样自律和勤奋,必将成为大神!
  8. 点击率预估的几个经典模型简介
  9. Slack:日活跃用户50万人、6周增幅35%造就奇迹
  10. Java8 - 自定义实现体会Future的原理