please explain sbegin = s ? s : *lasts;
===

could someone explain the following code snippet to me please, specifically the third line as it seems to be causing an error in my code:

    char * (strtok_r)(char *s, const char *delimiters, char **lasts) {
        char *sbegin, *send;
        sbegin = s ? s : *lasts;
        ...

Im guessing its more like Im passing an incorrect pointer value or something but cant figure it out as Im not sure exactly how the function is doing what it does...

Ta

EDIT: Im not exactly sure the error that occurs either because the g$£&mn f*£$%^% Visual studio JIT debugger keeps trying to open all the time and messes everything up. grr..