Guest User

Untitled

a guest
Apr 16th, 2014
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.49 KB | None | 0 0
  1. on valmiina funktioita process_create, process_find, process_delete jne.
  2. jotka ottaa parametreinaan aina int argc, char** argv ja Students* s.
  3.  
  4. struct commands -rakenteeseen haluut määritellä yleispätevän structin, josta löytyy
  5. -funktion nimi (eli create, find, delete jne.)
  6. -yleispätevä funktiopointteri funktioon ks. alla
  7.  
  8. esimerkeistä:
  9. struct monster {
  10.     char *name;
  11.     int hitpoints;
  12.     int (*attack)(struct monster *, struct monster *); // funktiopointteri, jonka perusteella voidaan kutsua esim. punchia tai biteä
  13. };                             // tässä tehtävässä pitää siis asettaa joku (*tunnus)(oikeat parametrit);
  14.  
  15. int punch(struct monster *me, struct monster *target) {
  16.     int damage = rand() % 5;
  17.     printf("%s punches %s with %d damage\n", me->name, target->name, damage);
  18.         target->hitpoints -= damage;
  19.     return damage;
  20. }
  21.  
  22. int bite(struct monster *me, struct monster *target) {
  23.     int damage = 20;
  24.     printf("%s bites %s with %d damage\n", me->name, target->name, damage);
  25.         target->hitpoints -= damage;
  26.     return damage;
  27. }
  28.  
  29. int main(void) {
  30.     struct monster goblin = { "goblin", 20, punch }; //luodaan struct monster, jossa name on goblin, hitpointsit 20 ja funktio punch
  31.     struct monster vampire = { "vampire", 10, bite };
  32.  
  33.     vampire.attack(&vampire, &goblin);
  34.     goblin.attack(&goblin, &vampire);
  35.  
  36.     // goblin starts biting as well
  37.     goblin.attack = bite; //attack on siis funktiopointterin "tunnus" //(miksiköhän sitä oikeesti pitäis kutsua :DD)
  38.     goblin.attack(&goblin, &vampire);
  39. }
Advertisement
Add Comment
Please, Sign In to add comment