请解释sbegin = s?s:*持续;

Tob*_*oby 0 c string pointers

有人可以解释下面的代码片段,特别是第三行,因为它似乎导致我的代码中的错误:

char * (strtok_r)(char *s, const char *delimiters, char **lasts) {
    char *sbegin, *send;
    sbegin = s ? s : *lasts;
    ...
Run Code Online (Sandbox Code Playgroud)

我猜测它更像是我传递了一个不正确的指针值或什么,但不能弄清楚,因为我不确定该功能是如何做它做的...

钽

编辑:我不完全确定发生的错误,因为g $£&mn f*£$%^%Visual Studio JIT调试器一直试图打开并混乱一切.GRR ..

tim*_*rau 5

相当于

if (s)
    sbegin = s;
else
    sbegin = *lasts;
Run Code Online (Sandbox Code Playgroud)

为了获得更多的细节?:操作,你可以看这个.