函数的返回值可以是数值和全局变量的指针或引用,c/c++严禁返回局部变量的指针或引用。
调用函数的局部变量是存在于栈中的,在执行完调用函数之后会将局部变量的空间释放,也就是调用函数执行后局部变量将不存在与内存中。如果返回的是局部变量的指针或者是引用。返回给接收对象的是局部变量的地址,而这个地址的资源已经被释放了,也就是接受的返回值都将是空值(因为被释放),当函数返回时,该局部变量将超出范围并死亡。由于通过引用返回,调用者将获得悬空引用,就会出错。
其实局部变量返回指针或引用都是地址,而返回数值是值。