请问一个关于局部变量的简单有关问题,多谢

请教一个关于局部变量的简单问题,谢谢
int error(int &b)
{
int a = 0;
a = b;
return a;
}

int _tmain(int argc, _TCHAR* argv[])
{
int d = 3;
int c = error(d);
cout<<c<<endl;
}

函数error的int a 值能够返回么?
我理解的是他是局部变量,函数运行结束之后,a 就释放掉了,因此 返回值不确定。
但是 用vs2005测试之后发现返回值是正确的。
这是为什么呢?有什么原理?

------解决方案--------------------
不能。。。。
------解决方案--------------------
可以,因为a是值类型
------解决方案--------------------
int error(int &b)
{
int a = 0;
a = b;
return a;
}
x = error(10) //这里会有一个临时变量