c中的字符串指针

sou*_*912 0 c pointers

#include<stdio.h>
int main()
{
    char *s[] = { "knowledge","is","power"};
    char **p;
    p = s;
    printf("%s ", ++*p);
    printf("%s ", *p++);
    printf("%s ", ++*p);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

现在知道了

请解释从第二个printf()语句特别输出的输出.我认为因为++并且*具有相同的优先级因此*p++ p应首先递增然后使用*(从右到左的关联性为一元运算符).

Tri*_*Man 5

第一个增加*p并显示字符串(将其设置为knowldege中的n).第二个显示字符串*p然后递增p(将其移动到"是").第三个增量*p然后显示字符串(从"是"的s开始).