Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возвращение указателя на локальный объект, warning C4172: returning address of local variable or temporary 
:(
    Опции темы
krollcbas
Дата 3.2.2008, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.3.2007
Где: Россия, Москва

Репутация: нет
Всего: нет



При написании функции я возвращаю получаемое значение, на выход функции 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
}


PM MAIL   Вверх
archimed7592
Дата 3.2.2008, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Буквально сегодня объяснял то же самое.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0850 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.