Branch Table - Jump Table Example in C

Jump Table Example in C

Another simple example, this time demonstrating a jump table rather than a mere branch table. This allows program blocks outside of the currently active procedure/function to be called:

#include #include typedef void (*Handler)(void); /* A pointer to a handler function */ /* The functions */ void func3 (void) { printf( "3\n" ); } void func2 (void) { printf( "2\n" ); } void func1 (void) { printf( "1\n" ); } void func0 (void) { printf( "0\n" ); } Handler jump_table = {func0, func1, func2, func3}; int main (int argc, char **argv) { int value; /* Convert first argument to 0-3 integer (Hash) */ value = atoi(argv) % 4; if (value < 0) { value *= -1; } /* Call appropriate function (func0 thru func3) */ jump_table; }

Read more about this topic:  Branch Table

Famous quotes containing the words jump and/or table:

    I was given the gifts of the artist, and the trouble that goes with them: So I have that blessing, and there was never a time that I questioned it or doubted it.... For forty years, I wanted to jump out of windows.
    Louise Nevelson (1900–1988)

    Language was vigorous because, because ... editors usually “laid all the cards on the table so as to leave their hands ... free for more persuasive arguments!” The citizenry at large retaliated as best they could.
    State of Utah, U.S. public relief program (1935-1943)