Спасибо. теперь я понял .
buf_eep
- это и есть указатель на нулевой элемент массива, зачем там звездочка?
Нагляднее, по моему, buf_eep[i]
Смотря как объявить. Если как массив char - да, а если как массив указателей char - хз.
и всплыл еще вопрос…
char buf_eep[20]={0};
все таки требует выделение памяти вручную , или она выделится автоматически ?
Просто заполнение этого массива в цикле ведет к глючному поведению… где-то на 12 строке выкидывает из процедуры void list_sort(void) . такое впечатление ,что что-то не то с выделением памяти…
Она выделяется без участия программиста.
Память уже выделена. Вручную не надо.
Понял спасибо… видимо проблема в чем-то другом
Если ты думаешь, что так забиваешь весь массив нулями, то напрасно. Нулем инициализируется только первый элемент.
Это не я так думаю, а ТС. Я отвечал на его вопрос (с кодом).
Ой. Не посмотрел кому отвечаю, конечно же вопрос к карасику.
нет, я 0 потом забиваю в цикле. {0} использую для инициализации , т.к читал , что если просто обьявить без инициализации , то потом придется выделять память вручную… поэтому советуют использовать {0}? а не просто обьявлять… Если не прав… поправьте
точнее ‘\0’
Неправ. Поправляю.
т.е можно просто char byf_eep[20];
и массив все равно будет работать как надо…
Смотря что понимать под НОРМАЛЬНО. Память выделится статически, но содержимое всех элементов будет неопределенным.
Да я это понимаю…
а так?
И так
Не понимаю, что мешает сделать
for (uint8_t i = 0; i < 20; ++i) buf_eep[i] = 0x00;
или
memset(buf_eep, 0x00, 20);
И старайся избегать “магических чисел” в коде
я так вначале и пытался сделать , мне написали, что символьный массив нужно очищать ‘\0’ , а не 0 …