函数中返回指针是否能成功啊??

来源:百度知道 编辑:UC知道 时间:2024/06/06 06:45:38
如:type * fun()
{
type a,*p = &a;
return p;
}

返回局部变量时要小心,如果局部变量不是静态存储值,比如常量字符串的地址,特别是指针,如果返回局部变量的地址的话,这些地址的值应该是不确定的,有可能在你返回之后编译器并没有对栈加入什么其他的代码,虽然可以得到想要的值,但如果编译器开了优化或你在程序别处引用这些局部变量的时候,其值很可能因为栈的变化而改变,因为实质上随着函数的退出,一些在函数体内定义的变量的存储空间都被暴露了出来,也就是可能被其他的过程重新占用,所以最好不要返回局部变量,除非是在需要的时候,比如一些内存资源(比如new出来的内存),或者你知道你在干什么。

C++的编译器一般都会捕获返回局部变量带来的潜在问题的警告,你要注意一下。

可以,在调用时
type *a;
a=fun();
就行了

可以 !!
作如下测试:
int * fun()
{
int a = 3,*p = &a;
return p;
}

int main()
{

int *pp = NULL;
pp = fun();
printf("%d\n",*pp);

return 0;
}

输出:3

其实指针也是变量的,变量能返回,指针也可以的

指针当然可以返回