РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
471 of 1245 menu

Оператор разыменования *

Оператор * (разыменование) используется для получения значения, на которое указывает ссылка или умный указатель. Он работает с типами, реализующими трейт Deref или DerefMut. Оператор не принимает параметров, а применяется к выражению-указателю. Результатом является значение, расположенное по адресу, который хранит указатель.

Синтаксис

*выражение

Пример

Давайте получим значение переменной через ссылку с помощью оператора *:

fn main() { let x = 5; let r = &x; let res = *r; println!("{}", res); }

Результат выполнения кода:

5

Пример

Давайте изменим значение переменной через изменяемую ссылку с помощью оператора *:

fn main() { let mut x = 5; let r = &mut x; *r = 10; println!("{}", x); }

Результат выполнения кода:

10

Пример

Давайте разыменуем умный указатель Box, чтобы получить хранимое в нём значение:

fn main() { let b = Box::new(42); let res = *b; println!("{}", res); }

Результат выполнения кода:

42

Пример

Давайте разыменуем строку String через ссылку, чтобы получить срез str:

fn main() { let s = String::from("abcde"); let r = &s; let res: &str = &*r; println!("{}", res); }

Результат выполнения кода:

"abcde"

Смотрите также

  • трейт Deref,
    который позволяет разыменовывать умные указатели
  • механизм заимствования,
    который создаёт ссылки для разыменования
  • концепция владения,
    которая определяет, кто владеет значением
  • трейт Copy,
    который позволяет копировать значение при разыменовании
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить