так что я вижу это, набрав:
char a[] = "456";
вы инициализируете массив символов размером 4 (3 символа + '\ 0').хранение чего-либо более в одном и том же массиве может вызвать неопределенное поведение, и его следует избегать.Короче говоря: вы можете изменить значение этого массива, если его размер не меняется. Вы можете инициализировать массив следующим образом:
char a[100] = "456";
, чтобы оставитьнекоторое дополнительное пространство для любых возможных дополнений к строке, но это все, так как размер массива известен при компиляции и никогда не изменяется.Также обратите внимание, что это не будет работать:
char * a = "456";
это строковый литерал только для чтения, который не может быть изменен или переопределен.
PS: Яновичок, поправьте меня, если я ошибаюсь!