首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求“不能从函数中返回一个指向该函数局部自动变量的指针”的解释,该怎么处理

2012-04-05 
求“不能从函数中返回一个指向该函数局部自动变量的指针”的解释#includeiostreamusing namespace stdint

求“不能从函数中返回一个指向该函数局部自动变量的指针”的解释
#include<iostream>
using namespace std;
int *max(int *dd,int size);
int main()
{
  int a[]={1,3,5,6,54,543,2,456,10};
  cout<<"求最大值"<<endl;
  cout<<*max(a,sizeof(a)/sizeof(int))<<endl;//此处还是对max的间接引用。 
  system("pause");
  return 0;
}
int *max(int *dd,int size)
{
  int *cc=dd;
  for(int i=0;i<size;i++)
  {
  if(*cc<dd[i])
  {
  cc=&dd[i];
  }
  }
  return cc;

虽编译正常,但看了“不能从函数中返回一个指向该函数局部自动变量的指针”“返回的指针所指向的数据不能够是函数内声明的变量”之类的话,返回函数内创建的cc是错了吗?教程中唯一的改动是将CC替换为了max,可max不也是函数内创建的吗?  


[解决办法]
不能返回局部变量的指针或引用 比如
const int& fun()
{
int i = 10;
return &i;

cc是局部变量 但是你返回的是cc不是cc的指针或引用
[解决办法]
CC是函数内的局部变量,你一return堆就会释放内存,内部就木知是啥了,你完全可以把*dd当成输入输出参数,这样就不会有问题了。。。
[解决办法]
不能返回局部变量的指针和返回局部变量本身是不同意义的。
[解决办法]
例子里面返回的就是 a[]数组中对象的地址,当然没问题。。

热点排行