原文:C语言中关于返回局部指针变量与引用

原则:尽量不要返回一个局部变量的指针或引用,因为函数执行完之后,将释放分配给局部变量的存储空间,局部变量只是临时的存储空间,此时,对局部变量的引用和地址就会返回不确定的内存,但可以返回局部变量本身,局部变量实际上是返回变量值的拷贝,虽然在函数调用结束后所在内存会被释放回收掉,但返回值不是地址,而是局部变量的拷贝副本。 .返回局部变量 没有问题 .返回局部变量指针 出现错误 总结 局部变量: 局部 ...

2020-02-12 13:19 0 1098 推荐指数:

查看详情

c/c++不能返回局部对象和局部变量指针引用解释

在编写c/c++代码时,调用函数的书写让程序变得整洁易读,但是调用函数的返回值(局部变量返回值,变量,结构体,数组等)也有注意事项。c/c++严禁返回局部变量指针引用。 其实函数的返回值的规则非常好记:   函数的返回值可以是数值和全局变量指针引用。   函数的返回值不能是局部对象 ...

Tue Dec 06 05:33:00 CST 2016 0 6134
C++函数返回局部指针变量

遇到过好几次关于函数返回指针变量问题,有时候是可以的,有时候是不可以的,然后就混乱了。今天研究了下,结果发现原来和内存分配有关。 用下面的例子分析下吧: 这段p是局部指针,指向局部数组a,这种情况输出为空或者奇怪字符串。 分析: a是局部数组,系统为其分配的是栈内存,test ...

Sat Sep 24 21:58:00 CST 2016 0 5211
C语言中 指针引用和取值

  指针是一个存储计算机内存地址的变量。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。   根据出现的位置不同,操作符 * 既可以用来声明一个指针变量 ...

Sat Nov 02 00:45:00 CST 2013 2 18125
C++中如何在函数中返回局部变量指针/引用/地址?

01 不能直接返回局部变量引用/地址 C++有时候还挺傻的,比如调用函数的时候,我就想返回一个局部变量引用指针(常想用于返回新建的数组/对象),是不正确的。 比如下面这段代码,用指针存储变量 \(a\) 的地址并返回(直接返回 \(a\) 的地址的话,在编译器那关就过 ...

Wed Jul 22 06:01:00 CST 2020 0 2132
C语言中指针变量传参

first:1 *p is:2 second:2 first:1 a is:2 second:1 结论:当指针变量作为参数进行传参操作时,方法内部对变量进行操作,同时 也会影响传入的指针变量的值,因为他们指向的是同一块存储空间的数据 可参考图: ...

Sat Feb 16 21:12:00 CST 2019 0 970
关于C语言中指针变量的使用

一:指针变量 如下图所示,定义一个指针变量*Ip,通常的理解,如果使用IP打印或者是retrun时,都是调用的ip这个指针变量指向的内存地址,如上面的打印,分别用了%P,%d来打印其指向的内存地址 ,因为内存地址是无符号整型数,所以用%p打印的话是16进制 ...

Wed Oct 17 01:44:00 CST 2018 0 709
c语言中指针加1的情况.指针变量详细介绍

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容: 指针的类型, 指针所指向的 类型, 指针的值或者叫指针所指向的内存区, 还有指针本身所占据的内存区。 让我们分别说明。 先声明几个指针放着做例子:   例 ...

Mon Jul 13 23:35:00 CST 2015 0 6100
函数返回局部变量/局部指针

c语言 返回局部变量 局部指针 局部数组 内存四区模型   讨论这个问题之前,一定要理解堆区和栈区的工作原理,数据的存储区域(参考内存四区模型),另外一定不要返回局部对象或变量引用指针局部变量   局部变量局部自动变量局部静态变量,由于c返回的是值,因此返回一个 ...

Fri Dec 21 19:30:00 CST 2018 0 2055
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM