你可以在这里看到,N值超出范围后,它的地址返回给调用者。最终的结果是,对方最终非分配的内存地址,它会引起很多问题,如果使用。这是最常见的编程错误,新的程序员。许多新的编译器会给出一个警告(不是错误)如果程序员试图返回的地址-然而局部变量,有相当多的方式来欺骗编译器里让你做违法的事情而不产生警告,所以负担是程序员来确保他们返回地址是一个有效的变量在函数返回。
返回的地址通常是用来返回给调用者新分配的内存:
1
2
3
4
5
6
7
8
9
10
11
12
13
int* AllocateArray(int nSize)
{
return new int[nSize];
}
int main()
{
int *pnArray = AllocateArray(25);
// do stuff with pnArray
delete[] pnArray;
return 0;
}
结论
大多数时候,返回值将满足你的需求。它也返回到呼叫者信息最灵活和最安全的方法。然而,通过引用或地址返回也可以是有用的,尤其是使用动态分配的类或结构的时候。当使用引用返回或地址,请确保你没有返回一个引用,或地址,一个变量,将超出范围时,该函数返回!