C库函数strstr实现中为什么要用新建const char*变量代替参数?

const char * IND(const char * str, const char * substr)
{
assert(substr != NULL && str != NULL);
const char * psub = substr;
const char * pstr = str;

while (*pstr)
{
    const char * tmp = pstr;
    while (*tmp++ == *psub++);

    if (*psub == '\0')
        return pstr;

    psub = substr;
    pstr++;
}

return NULL;

}

为什么要
const char * psub = substr;
const char * pstr = str;
const char * tmp = pstr;
而不是直接操作

你的程序改变了psub和pstr,而psub = substr;这一行需要用它初始的值。就必须要再定义变量赋值了。