Rumah >pembangunan bahagian belakang >C++ >Bagaimana Saya Mencetak Penunjuk Fungsi dalam C Menggunakan `cout` dan `printf`?
Mencetak Penunjuk Fungsi dengan cout dan printf
Dalam C , penunjuk fungsi boleh dicetak menggunakan cout atau printf, tetapi dengan tingkah laku berbeza bergantung pada penentu format yang digunakan.
cout Operator
Secara lalai, cout menganggap penunjuk fungsi sebagai nilai boolean dan mencetak 1 untuk penunjuk bukan nol dan 0 untuk penunjuk nol. Untuk mencetak alamat sebenar, ia mesti dibuang secara eksplisit ke void*:
cout << (void *)pf;
Fungsi printf
Apabila menggunakan printf dengan penentu format %p, penunjuk fungsi dianggap sebagai penunjuk dan alamatnya dicetak heksadesimal:
printf("%p", pf);
Penunjuk Fungsi sebagai Boolean
Penunjuk fungsi sememangnya dianggap sebagai boolean dalam C . Ini disebabkan oleh peraturan penukaran boolean yang membenarkan penuding dihantar ke bool, di mana penuding bukan nol menilai kepada benar dan penuding nol kepada palsu. Tingkah laku ini boleh berlaku di luar jangkaan jika tidak diambil kira.
Penunjuk Fungsi Ahli
Mencetak penunjuk fungsi ahli adalah lebih kompleks kerana ia bukan penunjuk mudah. Walau bagaimanapun, adalah mungkin untuk mencetak alamat fungsi ahli menggunakan helah:
cout << (void *)(*(int **)&pf);
Ini mengambil kesempatan daripada fakta bahawa alamat fungsi ahli disimpan dalam elemen kedua penuding fungsi dan menghantar ia terbatal*.
Atas ialah kandungan terperinci Bagaimana Saya Mencetak Penunjuk Fungsi dalam C Menggunakan `cout` dan `printf`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!