По некоторым причинам многие рекомендуют инициализацию в стиле массива
char myString[50] = { 0 };
, однако, поскольку этот массив предназначен для использования в качестве строки, я считаю его гораздо более понятным и интуитивно понятным (и проще синтаксически) использовать инициализатор строки:
char myString[50] = "";
Это делает то же самое, но значительно упрощает то, что вы собираетесь инициализировать массив, как на самом деле пустая строка.
Ситуация, которую вы видите со «случайными» данными, это то, что происходит в массиве, так как вы не инициализируете его, вы просто получаете то, что происходит там.Это не означает, что память используется какой-то другой программой одновременно, поэтому вам не нужно об этом беспокоиться.Вам do нужно позаботиться о передаче указателя на массив char
, который не завершается должным образом 0 для любой функции C, ожидающей строку.
Технически вы затем вызываете неопределенное поведение , чего вам следует избегать.Это может легко привести к сбою вашей программы, так как невозможно определить, насколько далеко вы можете оказаться в памяти.Операционные системы могут уничтожать процессы, которые пытаются получить доступ к памяти, к которой им не разрешено обращаться.
Правильная инициализация массива пустой строкой позволяет избежать этой проблемы.