Dalam pengaturcaraan komputer, pengendali dereferen, yang juga dikenali sebagai pengendali indireksi, beroperasi pada pembolehubah penunjuk dan mengembalikan nilai lokasi, atau nilai-l, yang menunjukkan ingatan. Dalam bahasa pengaturcaraan C, pengendali penentangan dilambangkan dengan asterisk ( * ).
Sebagai contoh, dalam C, kita boleh mengisytiharkan pembolehubah x yang memegang nilai integer, dan p berubah-ubah yang memegang penunjuk kepada nilai integer dalam ingatan:
int x; int * p;
Di sini, asterisk memberitahu pengkompil, " p bukan integer, tetapi sebaliknya penunjuk ke lokasi dalam ingatan yang memegang integer." Di sini, ia bukan dereference, tetapi sebahagian daripada pengisytiharan penunjuk.
Sekarang kita boleh menetapkan p ke lokasi yang diperuntukkan untuk nilai x menggunakan & operator, yang bermaksud "alamat."
p = & x;
Tindakan ini memberitahu pengkompil, "Alamat di ingatan bahawa p poin ialah alamat yang anda peruntukkan untuk integer x ."
Untuk menggambarkan, jika kita menetapkan nilai x kepada 1 menggunakan kaedah konvensional, dan mencetak nilai, output akan menjadi 1 .
x = 1; printf ("% d", x);
Walau bagaimanapun, kita juga boleh menukar nilai x dengan merujuk p . Kami melakukan ini dengan tanda bintang:
* p = 2; printf ("% d", x);
Dan perubahan output menjadi 2 .
Dalam erti kata lain, selepas p telah diisytiharkan sebagai penunjuk jenis yang sama dengan x dan kemudian ditetapkan untuk menunjukkan nilai x, kita boleh menggunakan x dan * p secara bertukar ganti. Oleh kerana kedua-duanya merujuk kepada perkara yang sama, mengubah nilai satu akan mengubah nilai yang lain.
Penunjuk, istilah pemrograman, pemboleh ubah