Apa itu Pointer?
Dalam semua bahasa, penunjuk adalah jenis variabel yang menyimpan alamat memori, dan Anda bisa meminta mereka untuk memberi tahu Anda alamat yang mereka tunjuk atau nilai pada alamat yang mereka tunjuk.
Pointer dapat dianggap sebagai semacam tanda buku. Kecuali, alih-alih digunakan untuk melompat dengan cepat ke halaman dalam buku, pointer digunakan untuk melacak atau memetakan blok memori.
Bayangkan memori program Anda persis seperti satu array besar 65535 byte.
Pointer menunjuk dengan patuh
Pointer masing-masing mengingat satu alamat memori, dan karenanya masing-masing menunjuk ke satu alamat dalam memori.
Sebagai sebuah grup, pointer mengingat dan mengingat alamat memori, mematuhi setiap perintah dan mual Anda.
Anda adalah raja mereka.
Pointer dalam C #
Khususnya dalam C #, pointer adalah variabel integer yang menyimpan alamat memori antara 0 dan 65534.
Juga spesifik untuk C #, pointer bertipe int dan karenanya ditandatangani.
Anda tidak dapat menggunakan alamat bernomor negatif, Anda juga tidak dapat mengakses alamat di atas 65534. Upaya apa pun untuk melakukannya akan melempar System.AccessViolationException.
Pointer bernama MyPointer dinyatakan seperti ini:
int * MyPointer;
Pointer di C # adalah sebuah int, tetapi alamat memori di C # mulai dari 0 dan diperluas hingga 65534.
Hal-hal yang runcing harus ditangani dengan perawatan khusus
Kata tidak aman adalah dimaksudkan untuk menakut-nakuti Anda, dan untuk alasan yang sangat baik: Pointer adalah hal-hal runcing, dan hal runcing misalnya pedang, kapak, pointer, dll harus ditangani dengan perawatan khusus ekstra.
Pointer memberi programmer kontrol ketat terhadap suatu sistem. Karena itu kesalahan yang dilakukan cenderung memiliki konsekuensi yang lebih serius.
Untuk menggunakan pointer, kode tidak aman harus diaktifkan di properti program Anda, dan pointer harus digunakan secara eksklusif dalam metode atau blok yang ditandai sebagai tidak aman.
Contoh blok yang tidak aman
unsafe
{
// Place code carefully and responsibly here.
}
Cara menggunakan Pointer
Ketika variabel atau objek dideklarasikan atau dipakai, mereka disimpan dalam memori.
- Deklarasikan pointer dengan menggunakan awalan simbol *.
int *MyPointer;
- Untuk mendapatkan alamat variabel, Anda menggunakan awalan & simbol.
MyPointer = &MyVariable;
Setelah alamat ditetapkan ke pointer, hal berikut ini berlaku:
- Tanpa * awalan untuk merujuk ke alamat memori yang ditunjuk sebagai int.
MyPointer = &MyVariable; // Set MyPointer to point at MyVariable
- Dengan * awalan untuk mendapatkan nilai yang tersimpan di alamat memori yang ditunjuk.
"MyPointer is pointing at " + *MyPointer;
Karena pointer adalah variabel yang menyimpan alamat memori, alamat memori ini dapat disimpan dalam variabel pointer.
Contoh pointer digunakan dengan hati-hati dan bertanggung jawab
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.
}
Perhatikan jenis pointer adalah int. Ini karena C # mengartikan alamat memori sebagai angka integer (int).
Mengapa itu int bukan uint?
Tidak ada alasan bagus.
Mengapa menggunakan pointer?
Pointer sangat menyenangkan. Dengan begitu banyak komputer yang dikendalikan oleh memori, pointer memberdayakan seorang programmer dengan lebih banyak kontrol memori program mereka.
Pemantauan memori.
Gunakan pointer untuk membaca blok memori dan memantau bagaimana nilai-nilai yang ditunjukkan berubah seiring waktu.
Ubah nilai-nilai ini secara bertanggung jawab dan catat bagaimana perubahan Anda memengaruhi komputer Anda.