@ZhGhost

Как используются ссылки и указатели в С++?

Еще раз, всем привет! Для чего в данном примере передают в функцию ссылка(&sync), а не просто название переменной(sync), как в С#, к примеру.
stOnFootData sync;
memset( &sync, 0, sizeof( stOnFootData ) );

Теперь про указатели
В предыдущем вопросе я спрашивал про *, теперь мне вообще интересно, для чего нужно операция присваивания? Ведь указатель хранит адрес переменной. Почему нельзя просто использовать?
int *p = 0x1010101;
*p = 1;
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 2
В первой части вопроса у вас передаётся не ссылка, а указатель.

& в данном случае это операция взятия адреса переменной. Если вы заглянете в документацию, то увидите, что memset как раз таки принимает указатель.

Вторая часть не понятна. Вы спрашиваете зачем нужна операция и тут же показываете пример её использования.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Указатель - это такая же переменная как и все остальные, т.е. область памяти для хранения целочисленного значения. Чтоб ее использовать, ее нужно сначала инициализировать корректным значением, иначе получите ошибку/предупреждение на этапе компиляции.
Т.е. чтоб использовать *p, в p должно лежать корректное значение, поэтому перед этим оператором идет присваивание. В принципе ваш пример откомпилируется, но скорее всего он вызовет падение программы, т.к. адрес 0x1010101 взят с потолка и скорее всего укажет в нераспределенную область памяти. Может и не вызвать падение, тут уж как повезет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы