Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как определить была ли проинициализирована переменная (или массив)?  (Прочитано 10059 раз)
0 Пользователей и 1 Гость смотрят эту тему.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« : 20-05-2005 14:46 » 

Создается массив типа long, при этом он не инициализирован. В дальнейшем в некоторые элементы вносятся значения. Как мне определить элементы которые еще не были проинициализированы (т.е. в них еще не разу не заносилось значение). Когда при пошаговом исполнении просматриваешь значения в этих элементах, то там содержится что-то типа -32256. Но как наверняка определить?
зы: По сути в РНР это писалось if (isset($s)), как на С++, пытался сделать if (s==false), но ясное дело так нельзя, тип-то не bool.
Записан

ещё один вопрос ...
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 20-05-2005 15:01 » 

Никак - поэтому сначала инить с каким-нить недопустимым значением - например 0.
По сути не проинициаллизированнй массив - кусок памяти, и что в нём лежит знают только 2ГБ -  Господь Бог и Гейтс Бил Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 20-05-2005 17:44 » 

Цитата
поэтому сначала инить с каким-нить недопустимым значением
Это хорошо в данном проекте  я могу подобрать это значение, а ведь может случиться так, что этого значения может и не быть Жаль.
Записан

ещё один вопрос ...
Alf
Гость
« Ответ #3 : 20-05-2005 18:19 » new

Ты ведь пишешь на C++. А это значит, что абсолютно все в твоих руках.

Если тебе действительно необходимо иметь возможность во время выполнения определять, была ли инициализирована переменная, тебе следует создать свой собственный тип с такой функциональностью. Тогда в нем ты сможешь реализовать ту самую операцию IsSet(), которая тебе необходима. А там уж сможешь создать массив таких значений или что там тебе нужно.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #4 : 20-05-2005 18:28 » 

Если у тебя ссылочный массив по типу char *ch;. То обычно когда я еше не выделил память, то даю этой ссылке значение NULL. При любом некорректном обрашении к данной ссылке, у меня выскочит ошибка.
Заметил, что VC++ 6.0 при выделении памяти заполняет массивы автоматически значениями или 0xCC или 0xCD. Пока не разбирался по какому признаку. Билдер помоему заполняет нулями. Поэтому строить программу, только на особенностях одного компилятора не совсем корректно.
« Последнее редактирование: 20-05-2005 19:31 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines