64,644
社区成员
发帖
与我相关
我的任务
分享
int* test(int b)
{
int a=0;//局部变量
a=b; //行参复制给a
int * p=&a ; //定义一个int* 的指针,把变量a的地址给p
return p; //返回p。这个p是不是局部变量的指针?我觉得是的
}
void test2()
{
int a[10];
for (int i = 0; i < 10; i++)
{
a[i] = i;
}
}
int *result=test(5);
printf("%d\n", *result); //此时是5
test2();
printf("%d\n", *result); //此时是一个错误的值
int* test(int b)
{
int a=0;//局部变量
a=b; //行参复制给a
int * p=&a ; //定义一个int* 的指针,把变量a的地址给p
return p; //返回p。这个p是不是局部变量的指针?我觉得是的
}
void test2()
{
int a[10];
for (int i = 0; i < 10; i++)
{
a[i] = i;
}
}
int *result=test(5);
printf("%d\n", *result); //此时是5
test2();
printf("%d\n", *result); //此时是一个错误的值
[/quote]嗯嗯,我明白了。感谢你的解说,我返回的是个栈上的指针。一调用其他函数。确实指向了一个未知的数
// 哈哈,看你下次还敢返回局部变量的地址(指针)吗?
int *GetAddress()
{
int x = 10;
return &x;
}
int **GetAddress()
{
int v = 10;
int * x = &v;
return &x;
}
int * FunRetRef()
{
int a = 0;
cin>>a;
printf("FunRetRef Get inputFromUsr == %d\n", a);
return &a;
}
void TheThirdFunc( int nVal)
{
int i = 0;
int arr[10] = {0};
for ( int i = 0; i < 10; i++ )
{
arr[i] = i * nVal;
}
for (int i = 0; i < 10; i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
int *pRet = FunRetRef();
cout<<"nRet Value == "<<*pRet<<endl;
TheThirdFunc(argc);
cout<<"nRet Value == "<<*pRet<<endl;
return 0;
}
我闲的蛋疼。。 楼主自己调试看看吧。