Rumah > pembangunan bahagian belakang > C++ > Bagaimana Saya Mencetak Penunjuk Fungsi dalam C Menggunakan `cout` dan `printf`?

Bagaimana Saya Mencetak Penunjuk Fungsi dalam C Menggunakan `cout` dan `printf`?

Mary-Kate Olsen
Lepaskan: 2024-12-27 22:33:11
asal
263 orang telah melayarinya

How Do I Print Function Pointers in C   Using `cout` and `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;
Salin selepas log masuk

Fungsi printf

Apabila menggunakan printf dengan penentu format %p, penunjuk fungsi dianggap sebagai penunjuk dan alamatnya dicetak heksadesimal:

printf("%p", pf);
Salin selepas log masuk

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);
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan