C++为什么不能返回指针类型的数据?

局部变量不是在函数结束的时候就销毁吗,为什么指针传不回来,但是引用类型和普通类型的值都传回来了,不太懂

img

img

  • 局部变量 在 函数调用 返回后就会销毁了,虽然它的内存空间地址还在,但对应的数据 是 未知的【被系统回收或者被其他覆盖了】
  • 第一张图返回的,其实是 局部变量的一个拷贝副本,这个值 还是 10,所以没有问题
  • 第二张图返回的,是局部变量的地址,虽然 地址还在,但 对应的值是 未知的,所以 使用指针输出对应数据,就是未知的,出现乱码情况

指针可以传回来的,但是指向的内存空间由于是局部变量被系统回收了,可能分配给了其它进程,数据被重写,所以已经不是函数内设置的a=10的值了。
返回int类型是可以的,因为这是值传递,复制的是值。用指针的话,复制的只是指针的地址,而不是指针指向的内容