Функция null
Функция null создает нулевой указатель
заданного типа. Она возвращает константный
нулевой указатель *const T, который
не указывает ни на какой объект в памяти.
Параметром функция принимает тип указателя,
который нужно создать, в виде обобщенного
параметра T.
Нулевые указатели часто используются в
качестве сигнальных значений или при
взаимодействии с внешним кодом. Однако
разыменование нулевого указателя является
неопределенным поведением, поэтому работа
с такими указателями требует особой
осторожности и блока unsafe.
Синтаксис
std::ptr::null::<T>()
Пример
Давайте создадим нулевой указатель на тип
i32 и проверим его на равенство
с помощью метода is_null:
fn main()
{
let ptr: *const i32 = std::ptr::null();
println!("{:?}", ptr.is_null());
}
Результат выполнения кода:
true
Пример
Давайте создадим нулевой указатель и сравним его с обычным указателем на переменную:
fn main()
{
let num = 42;
let ptr: *const i32 = std::ptr::null();
let valid_ptr: *const i32 = #
println!("{:?}", ptr == std::ptr::null());
println!("{:?}", valid_ptr == std::ptr::null());
}
Результат выполнения кода:
true
false
Пример
Давайте используем нулевой указатель в качестве сигнального значения для функции поиска:
unsafe fn find_value(arr: &[i32], target: i32) -> *const i32
{
for item in arr
{
if *item == target
{
return item;
}
}
std::ptr::null()
}
fn main()
{
let arr = [1, 2, 3, 4, 5];
unsafe
{
let res = find_value(&arr, 3);
println!("{:?}", res.is_null());
let res2 = find_value(&arr, 9);
println!("{:?}", res2.is_null());
}
}
Результат выполнения кода:
false
true
Смотрите также
-
функция
null_mut,
которая создает изменяемый нулевой указатель -
тип
const-pointer,
который представляет константный сырой указатель -
тип
mut-pointer,
который представляет изменяемый сырой указатель -
блок
unsafe,
который позволяет выполнять небезопасные операции