Почему я не могу заменить указатель, переданный на функцию против возвращения? [дублировать]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему я не могу заменить указатель, переданный на функцию против возвращения? [дублировать]

Сообщение Anonymous »

У меня есть простой пример для начинающих, и я не понимаю разницы между двумя подходами. Я хочу функцию, которая называется Create , чтобы выделить и вернуть новую структуру. PrettyPrint-Override ">struct Test {
int value;
};

Почему следующее не работает
void create(Test* ref) {
ref = new Test { .value = 2 };
}

Test* test = nullptr;
create(test);
printf("value=%i\n", t->value); // Segmentation fault

Когда это работает просто хорошо?Test* create() {
return new Test { .value = 1 };
}

Test* test = nullptr;
test=create();
printf("value=%i\n", t->value); // ok


Подробнее здесь: https://stackoverflow.com/questions/794 ... urning-one
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»