Почему массивы в Си заполняются «М»?

Массивы в Си не заполняются значениями «М». Стандарт языка Си (C11) определяет, что значения элементов массива в момент его объявления не инициализируются явно, и их содержимое остается неопределенным (undefined).

Когда вы объявляете массив в Си, операционная система резервирует непрерывную область памяти размером, равным произведению размера элемента массива на количество элементов. Затем эта область памяти заполняется данными, которые были в этой области памяти до вашего объявления массива. Эти данные могут включать значения, остатки от предыдущих операций или просто мусор.

Таким образом, значение элементов массива может быть случайным, и нельзя полагаться на то, что они будут содержать какие-то осмысленные данные. Если вам важно иметь конкретные начальные значения элементов массива, вы должны явно их инициализировать при объявлении. Например:

int array[5] = {1, 2, 3, 4, 5};

В этом примере массив array будет инициализирован значениями от 1 до 5.