void func(const char *s){
char *result = new char[strlen(s)];
strcpy(result, "new stuff");
s = result;
}
int main(){
const char *str = "old stuff";
func(str);
std::cout << str << "\n";
return 0;
}
Код выше компилируется без суеты, но str
не меняется (по-прежнему печатает «старые вещи»). Почему это? Насколько мне известно, str
должен передаваться по ссылке в функцию, и я должен переназначить const char *
, чтобы указать на что-то еще.C++: переназначение константного символа в функции
Подсказка: Он передается по значению. – 3442
* Насколько я знаю, str должна передаваться по ссылке в функцию *, как она будет передаваться по ссылке, ее не ссылка – Borgleader
Возможный дубликат [В чем разница между передачей по ссылке или передачей по значению?] (http://stackoverflow.com/questions/373419/whats-the-difference-between-passing-by-reference-vs-passing-by-value) – owacoder