一般的来说,函数是可以返回局部变量的。局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指...
c语言函数是不能返回局部变量地址(特指存放于栈区的局部变量地址),除非是局部静态变量地址,字符串常量地址、动态分配地址。其原因是一般局部变量的作用域只在函数内,其存储位置在栈区中,当程序调用完函数后,局部变量会随此函数一起被释放。其地址指向的内容不明(原先的数值可能不变,也可能改变)。而局部静...
除局部变量的内存地址不能作为函数的返回值外,其他类型的局部变量都能作为函数的返回值。 我总结出下面这些规则: int、char等数据类型的局部变量可以作为函数返回值。 在函数中声明的指针可以作为函数返回值。指针可以是执行int等数据类型的指针,也可以是指向结构体的指针。 在函数中声明的结构体也可以作为函数返回值。
在return的时候,局部变量还在生命周期中,所以当然可以。建议回去重学一下基本原理。
这个时候,子函数才会去向系统申请堆空间存放你在这个函数中定义的变量,这些空间(变量)是有生命周期的,到这个子函数执行完毕,它的生命周期就结束了,申请的堆空间就会被释放,这个时候你指向它的指针当然是无效的;而可以返回局部变量的原因是,你子函数的返回值(子函数局部变量),会被当作父函数的局部变量...
在函数中,可以随意的返回一个局部变量。但如果返回一个局部变量的地址(指针),编译器就会给出警告(编译器也不可能那么完美能够彻底的检查出段错误)。在函数内部返局部指针这的确是一个危险的操作。鄙人的笔记先将用return返回值(指针为地址值)的机制搞清楚后再分析一下。
c c++ 函数不要返回局部变量的指针 结论:普通的变量(非new的变量)都是系统自动分配的,在栈空间(连续分配),无需程序员操作,速度快,但是...空间有限,不适合大量数据,大量的话就需要自己new new出来的变量是处于大容量的堆空间,分配方式可能类似与链表,当然,速度会慢...
局部变量的值是局部变量的值。不管返回的是不是指针变量,都不能返回局部变量的地址。
局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。上面是摘抄 局部变量的特点是:随函数调用时创建 随函数结束时析构(销毁)设想 如果返回了一个局部变量的指针 而恰好 局部变量偏偏又在函数结束后销毁 但指针并没有被销毁 ...