众所周知,函数返回局部变量的类型至关重要。由于指针和引用是一类特殊的类型,所以返回局部对象的指针或引用需格外注意。正确情况下,作为函数返回值的局部指针,其所指向对象的作用域应该是调用者作用域、全局或静态常量区;指向栈空间对象的指针作为返回值,存在潜在的错误。
1、 返回局部变量的值
例如
int num()
{
int a=2;
return a;
}
当返回类型不是引用时,编译器会在调用函数处复制局部对象,并返回局部对象的副本。所以函数先返回a的副本(值),然后a被注销,不存在问题。
注意:此时由于a所占的内存位于栈中,所以当函数结束时,a的内存会被销毁掉。当再次调用函数时,会重新分配内存。故有一下结果:
int num()
{
int a=2; //