Manolete - 1 month ago 7
C Question

# Better alternatives for switch statements

I know that this has been already discussed, and there are multiple answers to it. See Performance of array of functions over if and switch statements for instance, however I would like to get some other ideas.

I've got a function with a large

`switch`
statement. This is 26
`case`
and each with a
`left`
or
`right`
option. This function returns a pointer based on two given parameters (
`plane`
and
`direction`
):

``````double* getPointer(int plane, int direction) {
switch (plane)
{
case 0:
if (direction == 0)
return  p_YZ_L; // Left
else if (dir == 1)
return p_YZ_R;  //Right
else {
return 0;
}

break;
...
case 25:
...
}
}
``````

with

``````planes -> [0-25]
direction -> [0,1]
``````

I have been thinking on an array of functions, but this could also be tedious and I am not sure if it is the best option. Also it is not clear to me how to do it properly. Any ideas?

You can create a lookup table like this:

``````double *pointers[26][2] = {
{ p_YZ_L, p_YZ_R },
...
};
``````

Then your function becomes much simpler:

``````double* getPointer(int plane, int direction) {
if ((plane >= 0) && (plane < 26) && (direction >= 0) && (direction < 1)) {
return pointers[plane][direction];
} else {
return NULL;
}
}
``````
Source (Stackoverflow)