Що таке покажчик?
У всіх мовах вказівник - це тип змінної, яка зберігає адресу пам'яті, і ви можете або попросити їх повідомити вам адресу, на яку вони вказують, або значення за адресою, на яку вони вказують.
Вказівник можна розглядати як своєрідний знак книги. За винятком того, що замість того, щоб швидко переходити на сторінку в книзі, використовується вказівник для відстеження або картування блоків пам'яті.
Уявіть пам’ять вашої програми точно як один великий масив з 65535 байт.
Покажчики слухняно вказують
Покажчики пам’ятають по одній адресі пам’яті кожен, і тому кожен вказує на одну адресу в пам’яті.
Як група, вказівники запам'ятовують та згадують адреси пам'яті, підкоряючись кожній вашій команді ad nauseum.
Ти їх король.
Покажчики в C #
Зокрема, у C # вказівник - ціла змінна, яка зберігає адресу пам'яті між 0 і 65534.
Також характерні для C #, покажчики мають тип int і тому підписані.
Однак ви не можете використовувати негативно пронумеровані адреси, а також не можете отримати доступ до адреси вище 65534. Будь-яка спроба зробити це призведе до викиду System.AccessViolationException.
Вказівник під назвою MyPointer оголошується так:
int * MyPointer;
Вказівник на C # - це int, але адреси пам'яті в C # починаються з 0 і поширюються на 65534.
З гострими речами слід поводитися з особливою обережністю
Слово небезпечно це призначене , щоб налякати вас, так і для дуже вагомих причин: Покажчики загострених речі, і загострених речі , наприклад , мечі, сокири, покажчики і т.д. , повинні бути оброблений з додатковою особливої ретельності.
Покажчики дають програмісту жорстке управління системою. Тому допущені помилки можуть мати більш серйозні наслідки.
Для використання покажчиків у властивостях вашої програми повинен бути включений небезпечний код, а вказівники повинні використовуватися виключно в методах або блоках, позначених як небезпечні.
Приклад небезпечного блоку
unsafe
{
// Place code carefully and responsibly here.
}
Як користуватися покажчиками
Коли змінні чи об'єкти оголошуються або інстанціюються, вони зберігаються в пам'яті.
- Оголосити вказівник за допомогою префікса символу *.
int *MyPointer;
- Щоб отримати адресу змінної, ви використовуєте префікс & символ.
MyPointer = &MyVariable;
Як тільки адреса призначена вказівнику, застосовується таке:
- Без префікса * для посилання на адресу пам'яті, на яку вказують як на int.
MyPointer = &MyVariable; // Set MyPointer to point at MyVariable
- З префіксом *, щоб отримати значення, збережене на вказаній адресі пам'яті.
"MyPointer is pointing at " + *MyPointer;
Оскільки вказівник є змінною, яка містить адресу пам'яті, ця адреса пам'яті може зберігатися в змінній покажчика.
Приклад покажчиків, які використовуються обережно та відповідально
public unsafe void PointerTest()
{
int x = 100; // Create a variable named x
int *MyPointer = &x; // Store the address of variable named x into the pointer named MyPointer
textBox1.Text = ((int)MyPointer).ToString(); // Displays the memory address stored in pointer named MyPointer
textBox2.Text = (*MyPointer).ToString(); // Displays the value of the variable named x via the pointer named MyPointer.
}
Зауважте, тип вказівника - це int. Це тому, що C # інтерпретує адреси пам'яті як цілі числа (int).
Чому це int замість uint?
Немає вагомих причин.
Навіщо використовувати вказівники?
Покажчики дуже весело. Оскільки велика частина комп’ютера контролюється пам'яттю, вказівники дозволяють програмісту більше контролювати пам'ять програми.
Моніторинг пам'яті.
Використовуйте покажчики для читання блоків пам'яті та стеження за тим, як значення, що вказуються на зміну з часом.
Змініть ці значення відповідально і відслідковуйте, як ваші зміни впливають на ваш комп'ютер.