我对实施中的下一个声明有点困惑:
void add(char *prefix[NPREF], char *suffix) {
State *sp;
sp = lookup(prefix, 1);
//addsuffix(sp, suffix);
printf("size of prefix %d",&prefix);
printf("size of prefix %s", prefix + 1);
printf("size of prefix %d \n", &prefix+1);
for (int i = 0; i < NPREF; i++)
printf("%s \n" , prefix[i]);
printf("memmove \n");
memmove(prefix, prefix + 1, (NPREF - 1) * sizeof(prefix[0]));
prefix[NPREF - 1] = suffix;
for (int i = 0; i < NPREF; i++)
printf("%s \n", prefix[i]);
}
mmemove(前缀, 前缀 + 1, (NPREF - 1) * sizeof(prefix[0]));
所以prefix是一个char类型的指针。在这个术语中,前缀 + 1 是指向数组中下一个字符的链接,不是吗?
它是如何以正确的方式工作的?我已经阅读了 memmove 并阅读了指针,但无法为自己探索这个添加函数的行为。