Penunjuk Fungsi dan Penunjuk Data: Menangani Kenangan Tidak Serasi
Semasa menukar penunjuk fungsi kepada penunjuk data (dan sebaliknya) secara mengejutkan dibenarkan dalam C /C , kemudahan ini tidak dijamin di semua platform. Ini menimbulkan persoalan: mengapa penunjuk ini sememangnya tidak serasi?
Jawapannya terletak pada seni bina pengurusan memori. Dalam sesetengah seni bina, seperti seni bina Harvard, kod dan data berada di kawasan memori yang berbeza. Dalam sistem ini, penunjuk fungsi (menuju arahan) tidak boleh ditukar dengan lancar menjadi penunjuk data (menunjuk kepada nilai biasa) kerana ia wujud dalam domain memori yang berasingan.
Sebaliknya, dalam seni bina Von Neumann, di mana kod dan data wujud bersama dalam ruang memori yang sama, penunjuk fungsi dan penunjuk data kelihatan serasi. Walau bagaimanapun, C/C tidak mengehadkan dirinya kepada seni bina tertentu dan membenarkan kod yang berpotensi dijalankan pada kedua-dua jenis sistem.
Akibatnya, untuk mengekalkan keserasian merentas semua seni bina, C/C tidak boleh hanya merawat fungsi penunjuk dan penunjuk data sebagai alamat yang boleh ditukar ganti ke dalam ingatan utama. Potensi ketidakserasian berpunca daripada kepelbagaian reka bentuk seni bina yang mesti ditampung oleh C/C.
Atas ialah kandungan terperinci Mengapa Penunjuk Fungsi dan Penunjuk Data Tidak Serasi dalam C/C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!