Турбо отладчик (Turbo Debugger) 3.0

Здесь имя динамической локальной переменной


                               int n = 10;
                               ...
                               if (n == 0)
                               {
                               ...   /* никогда не будет выполняться */
                               }
                       }
                  }
               }
            Здесь имя динамической локальной переменной повторно исполь-
       зуется во внутреннем блоке,  скрывая доступ к переменной внешнего
       блока.  При  таком  повторном использовании имен переменных нужно
       соблюдать аккуратность.  Сделать такую ошибку гораздо легче,  чем


       может вам показаться, так как большинство программистов использу-
       ют в качестве имени счетчика ограниченный  набор  имен  (i,  n  и
       т.д.).
        Неправильное использование динамических локальных переменных
       -----------------------------------------------------------------
            Рассмотрим пример функции:
               int *divide_by_3(int n)
               {
                       int i;
                       i = n / 3;
                       return(&i);
               }
            Смысл данной функции состоит в возврате указателя на резуль-
       тат.  Ошибка состоит в том,  что к тому  моменту,  когда  функция
       возвращает  управление,  динамическая локальная переменная стано-
       вится недействительной и будет вероятно заполнена другими данными
       в стеке.
                 Функция возвращает неопределенное значение
       -----------------------------------------------------------------
            Если вы не завершаете функцию ключевым словом return, за ко-
       торым  следует  выражение,  то  будет возвращаться неопределенное
       значение. Например:
               char *first_capital_letter(char *p)

       TDeb 3.0 #2-3               = 131 =
               {
                       while (*p)
                       {
                               if ('A' <= *p && *p <= 'Z)

Содержание раздела