Строки на самом деле являются массивами констант символов. То есть тип "hello"
равен const char[6]
.
Это значит, что вы не можете изменить его. Однако из-за глупого преобразования в C ++ массив (в строковом литеральном виде) может быть неявно преобразован в неконстантный указатель на первый элемент. Это вводит в заблуждение и опасно. (Действительно, неявное преобразование с удалением констант больше нигде не существует.)
Вы должны убедиться, что вместо этого у вас есть модифицируемый буфер:
char buffer[] = "hello";
myfunc(buffer);