Memahami Perbezaan Penunjuk Void Antara C dan C
Dalam bidang pengaturcaraan, memahami perbezaan antara C dan C adalah penting, terutamanya apabila ia datang kepada penunjuk batal. Persoalan biasa timbul mengenai mengapa kod C tertentu berjaya dikompilasi tetapi gagal dalam C .
Menetapkan Penunjuk Tidak Sah dalam C vs. C
Isu awal yang diserlahkan ialah ketidakupayaan daripada C untuk menetapkan penuding kosong yang dikembalikan oleh malloc() kepada penunjuk integer (int*). Walau bagaimanapun, dalam C, tugasan sedemikian dibenarkan kerana penukaran tersiratnya.
Penukaran Eksplisit C dengan Penunjuk Tidak Sah
Berbeza dengan C, C menguatkuasakan penukaran eksplisit apabila memberikan penunjuk tidak sah kepada penunjuk lain. Ini bermakna pelakon diperlukan untuk menukar penuding kosong (kosong) kepada penuding integer (int).
Peraturan Penukaran dan Prinsip K&R2
Prinsip K&R2 dalam C menyatakan bahawa sebarang penunjuk ke objek boleh ditukar kepada menaip void* tanpa kehilangan data. Begitu juga, menukarkan penuding kosong ini kembali kepada jenis penuding asalnya akan mengekalkan nilai asalnya.
Standard C pada Penukaran Penuding Tidak Sah
Membina berdasarkan prinsip C, C standard seterusnya menentukan bahawa penukaran daripada T kepada batal kekal tersirat. Walau bagaimanapun, penukaran daripada void* kepada mana-mana jenis penuding lain mesti dihantar secara eksplisit.
Ringkasnya, sementara C membenarkan penukaran tersirat ke dan dari penuding tidak sah, C memerlukan hantaran eksplisit untuk penukaran daripada void* kepada jenis penuding lain. Perbezaan ini memastikan keselamatan jenis dan menghalang kemungkinan ralat dalam kod C.
Atas ialah kandungan terperinci Mengapa Tugasan Penunjuk Void Berfungsi dalam C Tetapi Gagal dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!