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

Метод sub

Метод sub выполняет вычитание из указателя. Он доступен для сырых указателей *const T и *mut T и является unsafe-операцией. Первым параметром метод принимает количество элементов, которое нужно вычесть из адреса указателя. Вторым параметром передаётся указатель, из которого выполняется вычитание. Метод возвращает новый указатель, смещённый назад на указанное количество элементов.

Синтаксис

unsafe { ptr.sub(count) }

Пример

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

fn main() { let arr = [10, 20, 30, 40, 50]; let ptr = arr.as_ptr(); unsafe { let shifted = ptr.add(4).sub(2); println!("{}", *shifted); } }

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

30

Пример

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

fn main() { let arr = [10, 20, 30, 40, 50]; let ptr = arr.as_ptr(); unsafe { let shifted = ptr.add(2).sub(1); println!("{}", *shifted); } }

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

20

Пример

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

fn main() { let mut arr = [10, 20, 30, 40, 50]; let ptr = arr.as_mut_ptr(); unsafe { let shifted = ptr.add(3).sub(2); *shifted = 99; } println!("{:?}", arr); }

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

[10, 99, 30, 40, 50]

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

  • метод add,
    который выполняет прибавление к указателю
  • метод offset,
    который смещает указатель на заданное число элементов
  • метод wrapping_add,
    который выполняет прибавление с оборачиванием
  • метод read,
    который читает значение по указателю
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить