char *strA() { char str[] = "hello word"; return str; } 上述程序有什么问题? 简单的来说,str是个局部变量的地址,作为返回值,有可能被提前回收。 那么局部变量可以作为函数的返回值吗,这个问题不能一概而论。局部变量 ...
下面的内容是在C专家编程里面看到的,摘录于此。 在C语言中,局部变量的作用域只在函数内部,在函数返回后,局部变量的内存就会被释放。如果函数只是返回局部变量,那么这个局部变量会被复制一份传回被调用处。但是如果函数返回的是局部变量的地址,那么就会报错,因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放,这样指针指向的内容就是不可预料的内容,程序就会出错。准确的来说,函数不能通过返回指向栈内存 ...
2020-08-02 18:42 0 598 推荐指数:
char *strA() { char str[] = "hello word"; return str; } 上述程序有什么问题? 简单的来说,str是个局部变量的地址,作为返回值,有可能被提前回收。 那么局部变量可以作为函数的返回值吗,这个问题不能一概而论。局部变量 ...
一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数 ...
一、函数返回值 说到返回值,相信大家肯定都认识,没错,就是return。 所谓返回值可以这样理解:函数外部的代码要想获取函数的执行结果,就可以在函数里用return语句把结果返回。 那具体怎么用呢?接着往下看: 注意: 1、函数在执行过程中只要遇到 ...
函数的局部变量用作返回值时,会生成一个局部变量的拷贝用作返回值,之后局部变量会被系统回收,函数不能返回局部变量的地址,因为如果返回局部变量的地址,系统回收后,指针指向的内容就无意义了,但是对于静态变量也可以返回其指针。 #include "stdio.h" int ...
目录 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.常量 ...
转载:http://www.cnblogs.com/ZJAJS/archive/2013/03/08/2949162.html 函数调用和局部变量 要研究函数的调用过程,先来看下面的一段代码: 对于 z = Add(1, 2); 这一句 ...