В семействе языков C пространства памяти, представляющие строки (char arrays
), заканчиваются нулевым символом \0
Таким образом, память для хранения строки должна быть как минимум на один символ больше, чеможидаемый размер, когда вы записываете его с помощью " "
В вашем новом примере создается не строка, а массив символов.Поскольку вы переключили форму записи " "
на { }
, система больше не создает строку с нулевым символом в конце, а скорее создает массив, как вы и просили.
Суть в том, чтоСтроки являются специальными и имеют \0
, прикрепленные к их концу системой автоматически, и поэтому требуют дополнительного места.