В C ++ параметры передаются по значению (если явно не помечены как ссылочные параметры), поэтому, когда вы передаете dict
, указатель (на указатель на char
) на createArray
, dict
внутри вашего Функция - это другой объект, хотя и с тем же начальным значением, что и dict
в main
. Если вы хотите увидеть изменения в dict
в main
, вам нужно будет передать его по ссылке или передать его адрес в функцию, получив char ***
.
1012 * Е.Г. *
void createArray(char**& dict, int* arraysize)
или
void createArray(char*** pdict, int* arraysize)
{ // use (*pdict) instead of dict ...
и
// ...
createArray(&dict, &arraysize);
Более "C ++" способ добиться того, чего вы хотите, это иметь:
void createArray( std::vector<std::string>& dict );
и просто createArray
измените размер vector
до необходимого размера. Использование стандартных контейнеров, таких как vector
и string
, также освобождает вас от необходимости полностью освобождать память, которую вы выделяете, и которая в данный момент отсутствует в вашем коде.