Обнуление массива

Обнуление элементов массива, расположенных между экстремальными элементами (найти ошибку)
Помогите найти обшибку, пожалуйста, иногда верно выдает, иногда с частично зануляет, а иногда.
Обнуление последнего чередующегося ряда
Всем привет,нужна помощь.Пытаюсь обнулить последний знакочередующийся ряд,но не получается.В чем.
Обнуление потока вывода из файла
Есть файл с данными типа : 11 22 5 s 6 7 И такой кусочек кода: FILE *f = fopen(name, "r"); if.
Обнуление переменных (неправильная работа приложения)
Добрый день, подскажите, почему такое может получаться (компилятор VS2013 pro). Данное приложение.
Обнулить двумерный массив в C ++. Мне нужно 2 для петель?
Как я могу нуль 2D-массив в C++? Нужно ли мне два цикла для этого? Исходя из других высших языков, мне интересно, почему C++ не инициализирует массивы значимыми/разумными значениями по умолчанию? Должен ли я всегда объявлять массив, а затем «нулевым» его потом?
Jiew Meng 17 нояб. 2012, в 05:31
Поделиться
Нет, вам не всегда нужно обнулять его сразу после. Вот почему они не обнуляются для вас; это бесполезная трата времени, когда тебе это не нужно.
chris 17 нояб. 2012, в 03:42
Поделиться:
4 ответа
Лучший ответ
Язык C++ пытается следовать принципу «вы не платите за то, что не используете». Он не инициализирует фундаментальные типы для любых значений по умолчанию, потому что вы, возможно, не хотите, чтобы это произошло. В любом случае, язык предоставляет вам возможность явно запросить такую инициализацию.
На момент объявления вы можете использовать инициализаторы и просто сделать это
int array[10][20] = <>;
или, для динамически распределенного массива
int (*array)[20] = new int[10][20]();
и это даст нулевой инициализированный массив. Нет необходимости в петлях.
Но если вы хотите обнулить существующий массив, вам действительно нужно будет использовать что-то более сложное. В случае целых типов будет работать старый добрый memset . Для типов указателей или с плавающей точкой ситуация в общем случае сложнее. memset может работать или может не работать, в зависимости от свойств, определенных при реализации. В любом случае стандартная библиотека может помочь вам сократить количество явных циклов, предоставив такие обертки цикла как std::fill .
как коректно создать двумерный динамический массив строк и очистить память в с++
выдает ошибку. В чем моя ошибка? Как ее исправить? Что лучше использовать?
Отслеживать
Діма Лучик
задан 4 мар 2021 в 14:10
Діма Лучик Діма Лучик
1 1 1 бронзовый знак
Вы хотите сделать двумерный массив, у которого row (5?) строк, col (5?) столбцов, и каждый элемент такого массива — строка std::string ? Или всё-таки одномерный массив?
4 мар 2021 в 14:17
Во-первых, добавьте текст ошибки. Так будет яснее в чем проблема. Но обратите внимание на предыдущий комментарий: если вы хотите создать массив массивов, то после создания первого массива нужно пройтись по его элементам и присвоить им новые созданные массивы
4 мар 2021 в 14:21
выражение *(strings + i) может быть сокращено до более понятного и очевидного strings[i]
Как полностью очистить массив?
checkAddDel = new int[0]
Массив всегда имеет предопределенную длину, которая не меняется, можно только создать новый с нужным размером.
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 5
Вы можете после использования сделать:
checkAddDel = null;
или
checkAddDel = new int[0];
А заполненный ранее массив уничтожится сборщиком мусора.
Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать

профессиональный разработчик
используйте статический класс Array с методом Resize от самого msdn
var myArray = new int[10] < 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 >; Array.Resize(ref myArray, 0);
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Алексей Павлов @lexxpavlov
Программист, преподаватель
Возможно, лучше взять список List
public List checkAddDel; checkAddDel = new List(Word.Length); // предварительно указывать размер не обязательно, // но если известно заранее, то лучше указать Console.WriteLine(checkAddDel.Count); // 0 for (var i = 0; i < Word.Length; i++) < checkAddDel.Add((i + 1) * 10); >Console.WriteLine(checkAddDel.Count); // размер теперь стал равным Word.Length // используем список DoWork(checkAddDel); checkAddDel.Clear(); // теперь стал пустым Console.WriteLine(checkAddDel.Count); // 0
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

# @mindtester Куратор тега C#
Список List использовать уже не вариант, очень много переписывать)
вообще то это единственный разумный вариант. а если освоить фичи рефакторинга VS то и переписывать навряд ли страшно много