«function-pointers» etiketlenmiş sorular

Bir işlev işaretçisi, bir değişkende saklanabilen bir işlevin göstericisidir. Hangi fonksiyonun çalıştırılacağına dair bir çalışma zamanı seçimine izin verir.


8
İşlev işaretçisi olarak yakalamalara sahip C ++ lambda
C ++ lambdas ve bunların işlev işaretçilerine örtük dönüşümleriyle oynuyordum. Başlangıç ​​örneğim onları ftw işlevi için geri arama olarak kullanıyordu. Bu beklendiği gibi çalışıyor. #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback = [](const char *fpath, const struct stat *sb, int typeflag) -> int { cout …

7
Üye işlevine işlev göstericisi
Aynı sınıftaki başka bir işleve işaret eden bir sınıfın üyesi olarak bir işlev işaretçisi ayarlamak istiyorum. Bunu yapmamın nedenleri karmaşık. Bu örnekte çıktının "1" olmasını istiyorum class A { public: int f(); int (*x)(); } int A::f() { return 1; } int main() { A a; a.x = a.f; printf("%d\n",a.x()) …

7
Bir işlev işaretçisini başka bir türe çevirme
void (*)(void*)Geri arama olarak kullanılmak üzere bir işlev işaretçisini kabul eden bir işlevim olduğunu varsayalım : void do_stuff(void (*callback_fp)(void*), void* callback_arg); Şimdi, böyle bir işleve sahipsem: void my_callback_function(struct my_struct* arg); Bunu güvenle yapabilir miyim? do_stuff((void (*)(void*)) &my_callback_function, NULL); Ben baktım bu soruya ve sana 'uyumlu işlev işaretçileri' artığını söylüyorlar bazı …


4
((Void (*) ()) buf) (); anlamına gelmek?
Ben picoCTF ikili bir sömürü meydan okuma çözüyorum ve bu kod parçası rastladı: ((void (*)())buf)(); bufbir karakter dizisi nerede . Zorluğu çözdüm ama tam olarak ne yaptığını anlayamıyorum. Bu konuya baktım ama başaramadım. Ne anlama ((void (*)())buf)();geliyor?

4
Void * function () işlev için bir işaretçi mi yoksa void * döndüren bir işlev mi?
Anlamı hakkında kafam karıştı void *function(). Bir işaretçi void*mi, yoksa dönen bir fonksiyon mu? Ben her zaman bir işaretçi dönen özyinelemeli bir işlev olarak veri yapıları üzerinde kullandım, ama ben multithreading ( pthread) bir kod gördüğümde aynı işlev bildirimi vardır. Şimdi aralarındaki farkın ne olduğunu karıştırıyorum.

2
Lambda makrosu nasıl lambda oluşturur?
GitHub'da bu kod parçasını buldum ama tam olarak anlamadım: #define lambda(ret_type, _body) ({ ret_type _ _body _; }) Sonra: int (*max)(int, int) = lambda(int, (int x, int y) { return x > y ? x : y; }); int max_value = max(1, 2); // max_value is 2 Alt çizgi ne …
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.