Russian Qt Forum
Ноябрь 24, 2024, 02:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Нужно забить char нулями  (Прочитано 8962 раз)
merke
Гость
« : Ноябрь 26, 2010, 06:06 »

Всем привет!

Нужно забить массив char[129] нулями

Делаю так:

for(int i=0;i<128;i++)
    char = '0';

char[128] = '\0';

Верно ли я делаю?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Ноябрь 26, 2010, 06:24 »

memset(ch, 0, sizeof(ch));
Записан
merke
Гость
« Ответ #2 : Ноябрь 26, 2010, 06:50 »

спасибо!
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Ноябрь 26, 2010, 11:12 »

char array[129] = {0};
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
BRE
Гость
« Ответ #4 : Ноябрь 26, 2010, 11:13 »

char array[129] = {0};
Только же первый char = 0. Не?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Ноябрь 26, 2010, 11:14 »

Нет )
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
BRE
Гость
« Ответ #6 : Ноябрь 26, 2010, 11:17 »

Нет )
Строит глазки Точно?
Где написано?  Улыбающийся
Записан
BRE
Гость
« Ответ #7 : Ноябрь 26, 2010, 11:24 »

Нда.  Улыбающийся
При любой инициализации автоматического массива, он вначале зануляется.
Интересно теперь узнать прописано ли это в стандарте.

Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #8 : Ноябрь 26, 2010, 11:27 »

Нет )
Строит глазки Точно?
Где написано?  Улыбающийся

Это написано в стандарте. Первый элемент проинициализируется 0, остальные char()
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #9 : Ноябрь 26, 2010, 11:32 »

Цитировать
При любой инициализации автоматического массива, он вначале зануляется.

мммм, нет. Он содержит мусор.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
BRE
Гость
« Ответ #10 : Ноябрь 26, 2010, 11:32 »

Стандарт это хорошо. Спасибо.
Сейчас подумал, а как с этим раньше было в C? Откуда та я же это взял.  Смеющийся

Если необходимо просто проинициализировать массив, можно написать и так:
Код
C++ (Qt)
int buf[ 100 ] = {};
 
Записан
BRE
Гость
« Ответ #11 : Ноябрь 26, 2010, 11:33 »

Цитировать
При любой инициализации автоматического массива, он вначале зануляется.

мммм, нет. Он содержит мусор.
Под инициализацией я имею ввиду:
= { ... };
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #12 : Ноябрь 26, 2010, 11:38 »

Стандарт это хорошо. Спасибо.
Сейчас подумал, а как с этим раньше было в C? Откуда та я же это взял.  Смеющийся

Да, помоему в С это не работает Улыбающийся Но утверждат не буду )
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Waryable
Гость
« Ответ #13 : Ноябрь 28, 2010, 18:13 »

На сколько я помню, при одновременном объявлении и инициализации массива такое возможно. Но при одном условии: если инициализация производится не для всех элементов массива. Например: char ch[4] = {0, 1, 2, 3} все очевидно. А вот:  char ch[3] = {0, 1} в результате дает: ch[0] = 0, ch[1] = 1, ch[2] = 0, ch[3] = 0. И т.д. Это производится автоматически согласно стандарта C++. К сожалению не знаю верно ли это для С.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.234 секунд. Запросов: 23.