指针作为函数的返回值,会遇到的误解问题
#include<cstdio>
int *buffer();
int main()
{
int *p = buffer();
int i;
for(i = 0;i < 10;i++)
{
p[i] = i;
printf("%d ",p[i]);
}
return 0;
}
int *buffer()
{
int a[100];
return a;
}
int *buffer();
int main()
{
int *p = buffer();
int i;
for(i = 0;i < 10;i++)
{
p[i] = i;
printf("%d ",p[i]);
}
return 0;
}
int *buffer()
{
int a[100];
return a;
}
a为局部变量,但在VC++6.0 中运行结果是正确的
如果在别的C++ 变异环境中上述局部变量作为指针返回值出错,可选择下面两种方式纠正:
1、将函数实现中的局部变量定义为static
2、将返回的值定义为全局变量