在编写c/c++代码时,调用函数的书写让程序变得整洁易读,但是调用函数的返回值(局部变量的返回值,变量,结构体,数组等)也有注意事项。c/c++严禁返回局部变量的指针或引用。 其实函数的返回值的规则非常好记: 函数的返回值可以是数值和全局变量的指针或引用。 函数的返回值不能是局部对象 ...
原则:尽量不要返回一个局部变量的指针或引用,因为函数执行完之后,将释放分配给局部变量的存储空间,局部变量只是临时的存储空间,此时,对局部变量的引用和地址就会返回不确定的内存,但可以返回局部变量本身,局部变量实际上是返回变量值的拷贝,虽然在函数调用结束后所在内存会被释放回收掉,但返回值不是地址,而是局部变量的拷贝副本。 .返回局部变量 没有问题 .返回局部变量指针 出现错误 总结 局部变量: 局部 ...
2020-02-12 13:19 0 1098 推荐指数:
在编写c/c++代码时,调用函数的书写让程序变得整洁易读,但是调用函数的返回值(局部变量的返回值,变量,结构体,数组等)也有注意事项。c/c++严禁返回局部变量的指针或引用。 其实函数的返回值的规则非常好记: 函数的返回值可以是数值和全局变量的指针或引用。 函数的返回值不能是局部对象 ...
遇到过好几次关于函数返回指针变量问题,有时候是可以的,有时候是不可以的,然后就混乱了。今天研究了下,结果发现原来和内存分配有关。 用下面的例子分析下吧: 这段p是局部指针,指向局部数组a,这种情况输出为空或者奇怪字符串。 分析: a是局部数组,系统为其分配的是栈内存,test ...
指针是一个存储计算机内存地址的变量。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。 根据出现的位置不同,操作符 * 既可以用来声明一个指针变量 ...
01 不能直接返回局部变量的引用/地址 C++有时候还挺傻的,比如调用函数的时候,我就想返回一个局部变量的引用或指针(常想用于返回新建的数组/对象),是不正确的。 比如下面这段代码,用指针存储变量 \(a\) 的地址并返回(直接返回 \(a\) 的地址的话,在编译器那关就过 ...
first:1 *p is:2 second:2 first:1 a is:2 second:1 结论:当指针变量作为参数进行传参操作时,方法内部对变量进行操作,同时 也会影响传入的指针变量的值,因为他们指向的是同一块存储空间的数据 可参考图: ...
一:指针变量 如下图所示,定义一个指针变量*Ip,通常的理解,如果使用IP打印或者是retrun时,都是调用的ip这个指针变量指向的内存地址,如上面的打印,分别用了%P,%d来打印其指向的内存地址 ,因为内存地址是无符号整型数,所以用%p打印的话是16进制 ...
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容: 指针的类型, 指针所指向的 类型, 指针的值或者叫指针所指向的内存区, 还有指针本身所占据的内存区。 让我们分别说明。 先声明几个指针放着做例子: 例 ...
c语言 返回局部变量 局部指针 局部数组 内存四区模型 讨论这个问题之前,一定要理解堆区和栈区的工作原理,数据的存储区域(参考内存四区模型),另外一定不要返回局部对象或变量的引用和指针。 局部变量 局部变量分局部自动变量和局部静态变量,由于c返回的是值,因此返回一个 ...