Случай с указателями Это работает, потому что, когда вы присваиваете как str1="Hello"
, вы фактически создаете строковый литерал с именем hello, выделяя его где-то в памяти, и присваиваете адрес первого символабуквально к указателю, и так как указатель не является постоянным, вы можете назначить его снова с другими адресами.И еще один важный момент, который следует отметить, заключается в том, что созданный строковый литерал находится в постоянной памяти.
Случай с массивом символов Вы можете назначить ему строковый литерал при инициализации, так как он поддерживаетсяязык .И не путайте присвоение с инициализацией.Во время присваивания, поскольку это массив символов, вы должны изменять значение символ за символом. Вы пытаетесь адресовать первый адрес строкового литерала первому символу массива (имя массива возвращает адрес первого элементамассив). И это явно неправильно, так как первый элемент не является указателем, он не может хранить адрес.