我看书上的定义是在函数内部定义的常规变量使用自动存储空间,其在函数被调用时产生,在函数结束时消亡,使用的内存将被自动释放。
所以是不是不能通过函数返回在函数内部定义变量的地址呢?
我看下面这一种确实不能返回内部定义变量的地址
所以是不是不能通过函数返回在函数内部定义变量的地址呢?
==对的。局部变量的地址返回是没有意义的,还会出错。
你举的例子也是不可以的。能输出只是因为这个内存空间还没有被操作系统分配给其他变量而已。所以值还没被修改。
不是不可以返回地址
地址总是能够返回的
问题是,返回了地址,但地址里存放的数据已经被回收,地址被重新分配,并且赋值成了不知道什么东西,那么你再去显示它的值是毫无意义的
只要地址没有被重新分配,你就能够从里面读出原来的值
但这样做是有不确定性的
所以你应该永远保证你返回地址的对象没有被回收
在函数内部定义得变量地址是没有意义的,在函数调用结束后就会被自动释放,现在的编译器会保留释放前的数据,你可以再输出一下结果,应该就是错误的数据了
搞清楚啥是堆啥是栈,分配是怎么分配,释放时如何释放,就没有疑问了