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

求“不能从函数中返回一个指向该函数局部自动变量的指针”的解释
#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[]数组中对象的地址,当然没问题。。