Russian Qt Forum

Программирование => С/C++ => Тема начата: merke от Ноябрь 26, 2010, 06:06



Название: Нужно забить char нулями
Отправлено: merke от Ноябрь 26, 2010, 06:06
Всем привет!

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

Делаю так:

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

char[128] = '\0';

Верно ли я делаю?


Название: Re: Нужно забить char нулями
Отправлено: Igors от Ноябрь 26, 2010, 06:24
memset(ch, 0, sizeof(ch));


Название: Re: Нужно забить char нулями
Отправлено: merke от Ноябрь 26, 2010, 06:50
спасибо!


Название: Re: Нужно забить char нулями
Отправлено: pastor от Ноябрь 26, 2010, 11:12
char array[129] = {0};


Название: Re: Нужно забить char нулями
Отправлено: BRE от Ноябрь 26, 2010, 11:13
char array[129] = {0};
Только же первый char = 0. Не?


Название: Re: Нужно забить char нулями
Отправлено: pastor от Ноябрь 26, 2010, 11:14
Нет )


Название: Re: Нужно забить char нулями
Отправлено: BRE от Ноябрь 26, 2010, 11:17
Нет )
::) Точно?
Где написано?  :)


Название: Re: Нужно забить char нулями
Отправлено: BRE от Ноябрь 26, 2010, 11:24
Нда.  :)
При любой инициализации автоматического массива, он вначале зануляется.
Интересно теперь узнать прописано ли это в стандарте.



Название: Re: Нужно забить char нулями
Отправлено: pastor от Ноябрь 26, 2010, 11:27
Нет )
::) Точно?
Где написано?  :)

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


Название: Re: Нужно забить char нулями
Отправлено: pastor от Ноябрь 26, 2010, 11:32
Цитировать
При любой инициализации автоматического массива, он вначале зануляется.

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


Название: Re: Нужно забить char нулями
Отправлено: BRE от Ноябрь 26, 2010, 11:32
Стандарт это хорошо. Спасибо.
Сейчас подумал, а как с этим раньше было в C? Откуда та я же это взял.  ;D

Если необходимо просто проинициализировать массив, можно написать и так:
Код
C++ (Qt)
int buf[ 100 ] = {};
 


Название: Re: Нужно забить char нулями
Отправлено: BRE от Ноябрь 26, 2010, 11:33
Цитировать
При любой инициализации автоматического массива, он вначале зануляется.

мммм, нет. Он содержит мусор.
Под инициализацией я имею ввиду:
= { ... };


Название: Re: Нужно забить char нулями
Отправлено: pastor от Ноябрь 26, 2010, 11:38
Стандарт это хорошо. Спасибо.
Сейчас подумал, а как с этим раньше было в C? Откуда та я же это взял.  ;D

Да, помоему в С это не работает :) Но утверждат не буду )


Название: Re: Нужно забить char нулями
Отправлено: Waryable от Ноябрь 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++. К сожалению не знаю верно ли это для С.