我遇到了一些相当奇怪的东西,我找不到任何合理的东西.我写了一个像这样的函数返回一个像这样的int指针:
int* arr()
{
int array[3]={1,2,3};
return array;
}
Run Code Online (Sandbox Code Playgroud)
现在在main中,我声明了一个像k这样的int指针:
int*k=arr();
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但这是奇怪的事情,我只能使用其中一个块,k [0]或k [1]或k [3],它会打印正确的相应数字,但是当想要使用它时a这样只有第一个才能正确打印:
for(int i=0;i<3;i++)
{
cout<<k[i]<<endl;
}
Run Code Online (Sandbox Code Playgroud)
对于k [0],打印值是正确的,但对于其他人来说这是奇怪的.我想知道如果我没有使用指针,为什么我可以访问每个块?
您将返回指向在函数堆栈上创建的对象(此处为数组)的指针.例如,您可以使用std :: vector将数组从函数传递给调用者.
std::vector< int > arr()
{
std::vector< int > array = { 1, 2, 3 };
return array;
}
Run Code Online (Sandbox Code Playgroud)