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

Сырой указатель *const T

Сырой указатель *const T представляет собой неизменяемый указатель на данные типа T в памяти. В отличие от ссылок, сырые указатели не гарантируют безопасность и не проверяются компилятором на корректность. Они могут быть пустыми, указывать на освобождённую память или быть невыровненными. Параметром является тип данных T, на который указывает указатель. Для разыменования сырого указателя требуется блок unsafe.

Синтаксис

let ptr: *const T = &value as *const T;

Пример

Давайте создадим сырой указатель на целое число и разыменуем его в небезопасном блоке:

fn main() { let num = 42; let ptr: *const i32 = &num as *const i32; unsafe { println!("{}", *ptr); } }

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

42

Пример

Давайте создадим сырой указатель на строку и проверим его на пустоту:

fn main() { let s = "abcde"; let ptr: *const str = s as *const str; if ptr.is_null() { println!("Pointer is null"); } else { println!("Pointer is not null"); } }

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

"Pointer is not null"

Пример

Давайте создадим сырой указатель на элемент массива и получим его значение:

fn main() { let arr = [10, 20, 30, 40, 50]; let ptr: *const i32 = &arr[2] as *const i32; unsafe { println!("{}", *ptr); } }

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

30

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

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