Потому что второй cout
напечатает то, на что указывает str
. И str
, указатель в вашей главной функции будет иметь одинаковое значение до и после вызова func
.
Действительно, в функции func
вы меняете значение переменной aString
. Но это другая переменная, чем str
в main.
Если вы хотите, чтобы значение str
было изменено, вы должны передать его func
по ссылке или по указателю. (Обратите внимание, что вы пишете, чтобы передать символы по указателю. Я имею в виду, что вы должны передать указатель по указателю: void func(char **str_ptr)
или по ссылке void func(char *&str_ref)
)
Если вы действительно делаете C ++, вы должны использовать std :: string вместо старых строк C.
Пример передачи указателя по указателю:
func(char ** aString)
{
char * tmpStr= new char[100];
cin.getline(tmpStr,100);
delete [] *aString;
*aString = tmpStr;
}
Плюс вы должны назвать это так: func(&str);