Perbandingan Penunjuk untuk Kesetaraan Objek
Apabila membandingkan penunjuk yang merujuk kepada pembolehubah yang sama, seperti dalam contoh:
int *a = something; int *b = something;
Timbul persoalan sama ada pengendali kesamarataan "a == b" memberikan yang diharapkan hasil.
Operator Kesaksamaan (==, !=)
Mengikut standard C, penunjuk jenis yang sama boleh dibandingkan untuk kesamaan seperti berikut:
Operator Perhubungan (<, > , <=, >=)
Operator perhubungan untuk penunjuk ialah ditakrifkan hanya untuk penunjuk kepada objek atau fungsi daripada jenis yang sama. Hasilnya bergantung pada sama ada penuding menghala ke objek atau fungsi yang sama, atau sama ada satu atau kedua-duanya adalah nol.
Sebagai contoh, dalam kes tatasusunan, penunjuk kepada elemen berbeza membandingkan lebih besar atau kurang daripada satu sama lain berdasarkan kedudukan mereka dalam tatasusunan. Walau bagaimanapun, membandingkan penunjuk kepada objek bukan tatasusunan atau fungsi yang bukan ahli objek yang sama mungkin menghasilkan hasil yang tidak ditentukan.
Pengecualian untuk Fungsi Maya
Dalam kes di mana sama ada penunjuk menunjuk ke fungsi ahli maya, hasil perbandingan tidak ditentukan oleh standard.
Perbandingan dalam Amalan
Perlu diambil perhatian bahawa perbandingan penunjuk menggunakan operator kesamarataan (==, !=) secara amnya jelas dan boleh dipercayai untuk menentukan sama ada penunjuk menghala ke objek yang sama. Walau bagaimanapun, pengendali hubungan (<, >, <=, >=) harus digunakan dengan berhati-hati, kerana tingkah laku mereka boleh berbeza bergantung pada konteks tertentu.
Bonus: Perbandingan dengan Templat
Pustaka standard juga menyediakan templat untuk perbandingan penuding, seperti std::less<> dan kawan-kawan. Templat ini menjamin jumlah pesanan untuk sebarang jenis penunjuk, walaupun pengendali terbina dalam tidak memberikan gelagat yang jelas.
Atas ialah kandungan terperinci Apabila Membandingkan Penunjuk dalam C , Sejauh Mana Kebolehpercayaan Pengendali Kesamaan dan Perhubungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!