Funkcja jako argument innej funkcji

0

Witam.

Czy w języku ANSI C możliwe jest wykorzystanie funkcji jako argumentów innej funkcji w taki sposób jaki przedstawia ten przykład w języku Python:

def a(text):
    print text

def b(text):
    print text * 5

def tester(f):
    w1 = "test"

    f(w1)

tester(b)

Chodzi mi o to, aby funkcja tester jako argument przyjmowała wyłącznie ogólną nazwę funkcji, która rzeczywiście zostanie podana podczas wywołania jako parametr.

Czy taki zabieg jest możliwy?

Dodam jeszcze output:

>>> 
tester(a)
test
tester(b)
text text text text text 
>>> 

Z góry dziękuję i pozdrawiam.

0
>>> 
tester(a)
test
tester(b)
testtesttesttesttest
>>> 

To jest właściwy output, sorry za duplikat.

0

Oczywiście, że się da -> wskaźniki do funkcji.

0

Napisałem coś takiego drogą dedukcji:

#include <stdio.h>

void a(int liczba) {
    printf("Liczba: %d", liczba);
}

void b(int liczba) {
    printf("Liczba (razy 5): %d", liczba * 5);
}

void tester(int liczba, int (*f)(int liczba)) {
    printf("Wynik: ", (*f)(liczba));
}

int main(void) {
    int liczba = 3;
    int (*p)(int liczba);
    
    p = a;
    
    tester(liczba, p);
    
    return 0;
}

Co robię źle?

0

Ok, poprawiłem:

#include <stdio.h>

int a(int liczba) {
    return liczba;
}

int b(int liczba) {
    return liczba * 5;
}

void tester(int liczba, int (*f)(int liczba)) {
    printf("Wynik: %d", (*f)(liczba));
}

int main(void) {
    int liczba = 3;
    int (*p)(int liczba);
    
    p = a;
    
    tester(liczba, p);
    
    return 0;
}
0

ok, spoko, ale na co wskazuje p? jaka to funkcja?

0
#include <stdio.h>

 int a(int liczba) {
    return liczba;
}
 
int b(int liczba) {
    return liczba * 5;
}
 
void tester(int liczba, int (f)(int)) {
    printf("Wynik: %d", f(liczba));
}
 
int main(void) {
    int liczba = 3;
    tester(liczba, a);
    tester(liczba, b);
    return 0;
}

Tak jest dużo ładniej :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1