Посмотрите на следующий код:
#include <iostream>
#include <string>
using namespace std;
void reverseStr(string arr, int start, int end)
{
while (start < end)
{
swap(arr[start], arr[end]);
++start;
--end;
}
}
int main()
{
string str = "CPP";
reverseStr(str, 0, 3);
cout << str;
return 0;
}
Выход равен CPP, в то время как ожидается P CC.
Вопрос: Как передать строку по ссылке в C ++? Строки - это обычный массив? Если да, то ссылка должна быть передана автоматически, в то время как она просто создает копию в формальных параметрах.
Мой вопрос заключается в том, почему я должен использовать свою функцию как void reverseStr(string &arr, int start, int end)
вместо просто void reverseStr(string arr, int start, int end)
. Почему я должен использовать дополнительные &
неофициальные параметры? Разве строковые переменные не являются просто другими массивами?