HTML Diff
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