File: Stare vježbe/vjezbe10/67__pfunkcije_genericko_zbrajanje.c
/* 67__pfunkcije_genericko_zbrajanje.c Primjena pointera na funkciju za implementaciju genericke funkcije za zbrajanje razlicitih tipova podataka. */ #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> int int_zbroj(int, int); char* string_zbroj(char*, char*); void* zbroji(void *a, void *b, void* (*f)(void*, void*)) { return (*f)(a, b); } main() { char s1[]="Tom", s2[]="Jerry"; int a=36, b=64; int izbroj; char* szbroj; /* cast parametara u one koje funkcija zbroji ocekuje */ izbroj = (int)zbroji((void*)a, (void*)b, (void* (*)(void*, void*))int_zbroj); printf("%d + %d -> %d\n", a, b, izbroj ); szbroj = (char*)zbroji((void*)s1, (void*)s2, (void* (*)(void*, void*))string_zbroj); printf("%s + %s -> %s\n", s1, s2, szbroj ); free(szbroj); return 0; } int int_zbroj(int a, int b) { return a+b; } char* string_zbroj(char *a, char *b) { char* c = (char*) malloc(strlen(a) + strlen(b) + 4); strcpy(c, a); strcat(c, " i "); strcat(c, b); return c; }
|