uint32_t var[256];
uint32_t var[] = {0xFFFFFFFF};
Моя задача заключается в инициализации всех ячеек массива значением 0xFFFFFFFF,. Однако, приведенный пример приводит к тому, что инициализируется желаемым значением лишь первая ячейка массива, а остальные принимают значение 0. Решил, что механизмы инициализации в Си и C++ как-то отличается, но залез в Интернет – полно примеров, где люди инициализируют массив точно также, как это сделал я.
memset ?
неа
Нет возможности работать с памятью напрямую(
объяви за границой main
Объявлен за пределами main
0xFFFFFFFF - это просто -1, фактически
в с++ ситуация послжнее так как {} принимают смысл std::initializer_list и дальше ничего сказать не могу так как не программирую на этом языке. В си {} инициализирует только те элементы которые ты указываешь, остальные он зануляет
Ну, да, безусловно. Просто предпочитаю писать явно :))
А. я подумал 0
в C только memset сработает, или malloc, всё
Такое возможно если вы сразу обьявите uint32_t var[256] = {0xFFFFFFFF}
Опять же здесь инициализация первого элемента этим значением, остальные в ноль
Там где у вас по настоящему массив
Обсуждают сегодня