Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Возвращение указателя на локальный объект


Автор: krollcbas 3.2.2008, 00:45
При написании функции я возвращаю получаемое значение, на выход функции return.
В функции участвует локальная переменная, которую собственно я подсчитываю и далее 
пересылаю на выход функции.
По результатам компиляции вижу предупреждение:
warning C4172: returning address of local variable or temporary 
Вопрос: Мне непонятен код ошибки. Как сделать тоже самое, но правильно, 
без предупреждений.
Код

char *show_string(char *string) //Фукция сдвига кодировки
{
int i=0;//длинна строки
int x;// для результата
unsigned int y[100];
char string1[100]="";
    while (*string != '\0') 
   {
        y[i]=*string;    
        if (y[i] >= -64 && y[i]<= -17)
        {x = y[i]+ 192; //Сдвиг кода слева направо с А по п
        y[i]=*string;
        string1[i]=x;
        //printf("1st_x=%i\ty[%i]=%c   string[%i]=%c  string1[%i]=%c\n",x,i,y[i],i,string[i],i,string1[i]);
        }
        else if (y[i] >= -16 && y[i] <= -1)
        {x = y[i] + 240; //Сдвиг кода слева направо с р по я
        y[i]=*string;
        string1[i]=x;
        //printf("2nd_x=%i\ty[%i]=%c   string[%i]=%c  string1[%i]=%c\n",x,i,y[i],i,string[i],i,string1[i]);
        }
        else if (y[i] == -71)
        {x = y[i] + 323; //Сдвиг кода слева направо для символа № 
        y[i]=*string;
        string1[i]=x;
        //printf("3td_x=%i\ty[%i]=%c   string[%i]=%c  string1[%i]=%c\n",x,i,y[i],i,string[i],i,string1[i]);
        }
        else
        {x=(int)*string;
        string1[i]=x;
        //printf("4td_x=%i\ty[%i]=%c   string[%i]=%c  string1[%i]=%c\n",x,i,y[i],i,string[i],i,string1[i]);
        }
      i++;
      string++;
    }
      return string1;  //warning C4172
}


Автор: archimed7592 3.2.2008, 00:54
Буквально сегодня объяснял http://www.forum.crossplatform.ru/index.php?showtopic=356.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)