0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: rust, разыменование</p>
1
<p>Теги: rust, разыменование</p>
2
<p>Говоря об<strong>Unsafe</strong>-контексте в рамках низкоуровневого програvмирования на Rust, мы уже упоминали<a>указатели</a>. Но эта тема будет неполной, если не рассказать подробнее об<strong>операции разыменования</strong>*. С ее помощью разработчик может обратиться к значению по адресу, хранимому в указателе. Но обращение это должно осуществляться в блоке<strong>unsafe</strong>:</p>
2
<p>Говоря об<strong>Unsafe</strong>-контексте в рамках низкоуровневого програvмирования на Rust, мы уже упоминали<a>указатели</a>. Но эта тема будет неполной, если не рассказать подробнее об<strong>операции разыменования</strong>*. С ее помощью разработчик может обратиться к значению по адресу, хранимому в указателе. Но обращение это должно осуществляться в блоке<strong>unsafe</strong>:</p>
3
<p>Далее, задействуя полученное таким образом значение, вы сможете присвоить его другой переменной:</p>
3
<p>Далее, задействуя полученное таким образом значение, вы сможете присвоить его другой переменной:</p>
4
<p>При этом важно отметить, что указатель вернет значение того типа, на объект которого он указывает. В нашем случае указатель<strong>num_pointer</strong>представляет указатель на объект типа<strong>i32</strong>, в результате чего<strong>операция разыменования</strong>вернет значение типа<strong>i32</strong>.</p>
4
<p>При этом важно отметить, что указатель вернет значение того типа, на объект которого он указывает. В нашем случае указатель<strong>num_pointer</strong>представляет указатель на объект типа<strong>i32</strong>, в результате чего<strong>операция разыменования</strong>вернет значение типа<strong>i32</strong>.</p>
5
<p>Кроме того, применяя указатель, мы сможем менять значение по адресу, который в этом указателе хранится:</p>
5
<p>Кроме того, применяя указатель, мы сможем менять значение по адресу, который в этом указателе хранится:</p>
6
<p>Важно понимать, что если мы желаем менять значение в памяти, на которую указатель указывает, это должен быть<strong>изменяемый, а не константный</strong>указатель, так как последний изменить значение не позволяет. Ну и последний момент заключается в том, что при выполнении операции меняется значение не самого указателя (он все так же хранит адрес в памяти), а значения, которое хранится по этому адресу.</p>
6
<p>Важно понимать, что если мы желаем менять значение в памяти, на которую указатель указывает, это должен быть<strong>изменяемый, а не константный</strong>указатель, так как последний изменить значение не позволяет. Ну и последний момент заключается в том, что при выполнении операции меняется значение не самого указателя (он все так же хранит адрес в памяти), а значения, которое хранится по этому адресу.</p>
7
<p><em>По материалам https://metanit.com/rust/tutorial/.</em></p>
7
<p><em>По материалам https://metanit.com/rust/tutorial/.</em></p>
8
8