函数中返回指针是否能成功啊??
来源:百度知道 编辑:UC知道 时间:2024/06/06 06:45:38
如:type * fun()
{
type a,*p = &a;
return p;
}
{
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
其实指针也是变量的,变量能返回,指针也可以的
指针当然可以返回