char *strA() { char str[] = "hello word"; return str; } 上述程序有什么问题? 简单的来说,str是个局部变量的地址,作为返回值,有可能被提前回收。 那么局部变量可以作为函数的返回值吗,这个问题不能一概而论。局部变量 ...
c语言 返回局部变量 局部指针 局部数组 内存四区模型 讨论这个问题之前,一定要理解堆区和栈区的工作原理,数据的存储区域 参考内存四区模型 ,另外一定不要返回局部对象或变量的引用和指针。 局部变量 局部变量分局部自动变量和局部静态变量,由于c返回的是值,因此返回一个局部变量是可以的,无论自动还是静态,因为这时候返回的是这个局部变量的值。另外,函数返回局部变量时实际上是返回变量值的拷贝。a为局部变 ...
2018-12-21 11:30 0 2055 推荐指数:
char *strA() { char str[] = "hello word"; return str; } 上述程序有什么问题? 简单的来说,str是个局部变量的地址,作为返回值,有可能被提前回收。 那么局部变量可以作为函数的返回值吗,这个问题不能一概而论。局部变量 ...
目录 1. 不可返回的局部变量 1.1 函数不能返回指向栈内存的指针 2 可返回的局部变量 2.1 返回局部变量本身 2.2 常量 2.3 静态局部变量 2.4 堆内存中的局部变量 2.5 返回 ...
函数不能返回指向栈内存的指针 原因:返回值是拷贝值,局部变量的作用域为函数内部,函数执行结束,栈上的局部变量会销毁,内存释放。 可返回的局部变量: 1. 返回局部变量本身 View Code 2.常量 ...
了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话 ...
转自:https://www.cnblogs.com/fanhaha/p/7117766.html 原因:返回值是拷贝值,局部变量的作用域为函数内部,函数执行结束,栈上的局部变量会销毁,内存释放。 可返回的局部变量: 1. 返回局部变量本身 2.常量 ...
01 不能直接返回局部变量的引用/地址 C++有时候还挺傻的,比如调用函数的时候,我就想返回一个局部变量的引用或指针(常想用于返回新建的数组/对象),是不正确的。 比如下面这段代码,用指针存储变量 \(a\) 的地址并返回(直接返回 \(a\) 的地址的话,在编译器那关就过 ...
遇到过好几次关于函数返回指针变量问题,有时候是可以的,有时候是不可以的,然后就混乱了。今天研究了下,结果发现原来和内存分配有关。 用下面的例子分析下吧: 这段p是局部指针,指向局部数组a,这种情况输出为空或者奇怪字符串。 分析: a是局部数组,系统为其分配的是栈内存,test ...
我们大家都知道指针函数的返回指针不能指向函数内的自动变量,如果需要返回函数的内部变量的话,就需要将该变量声明为静态变量。为什么函数能够返回 静态变量的地址而不能返回局部自动变量的地址,到底什么样的对象能够返回其地址,而什么样的对象不能够返回其地址?静态变量与局部自动变量的主要区别是什 ...