04. februar 2005 - 08:55
Der er
9 kommentarer og 1 løsning
Hjælp til funktionskald
hejsa Jeg er ved at lave en lille c-program, men er stødt ind i et problem! Jeg har 4 funktioner med navnene, bil1, bil2, bil3 og bil4, samt en random()-generator der genererer 1,2,3 eller 4, kaldet res. Hvordan får jeg koblet "res" til enden af bil, så programmet kører enten bil1, bil2, bil3, eller bil4, afhængig af random-generatoren. Hvis det skulle udskrive på skærm kunne det løses med ("bil%d", res), men det skal bruges til et funktionskald. /Jademutter
Annonceindlæg fra NetApp
04. februar 2005 - 08:58
#1
du kunne lave et array eller vector med pointers til dine funktioner, og så via din random funktion kan du så finde det funktions pointeren i arrayet
04. februar 2005 - 09:20
#2
jamen er det ikke lidt overkill??? det er jo bare et simpelt funktionskald!
04. februar 2005 - 09:26
#3
Jeg mener(men er ikke sikker) at pointers til funktioner skal laves ved compile-time
04. februar 2005 - 09:53
#4
Hvad er compile-time?
04. februar 2005 - 09:56
#5
compile-time, jeg mener at kode skal skrives og compiles med pointene til funktioner, så man ikke kan lave en pointer til en funktion mens programmet kører
04. februar 2005 - 09:59
#6
Kan du ikke bare lave en switch? switch(res) { case 1: bil1(); break; case 2: bil2(); break; case 3: bil3(); break; case 4: bil4(); break; }
04. februar 2005 - 10:11
#7
det er ikke så svært med function pointers: #include <stdio.h> #include <stdlib.h> typedef void (*fptr)(); void f1() { printf("f1\n"); } void f2() { printf("f2\n"); } void f3() { printf("f3\n"); } void f4() { printf("f4\n"); } int main() { fptr f[] = { f1, f2, f3, f4 }; int i; srand(12345); for(i=0;i<10;i++) { f[rand() % 4](); } return 0; }
04. februar 2005 - 10:12
#8
Og det er faktisk lidt tricky fordi funktionsnavnene eksisterer ikke i den oversatte kode kun i kilde koden.
09. februar 2005 - 10:07
#9
jpk får point! svar??
09. februar 2005 - 10:17
#10
Okay, takker...
Kurser inden for grundlæggende programmering