下面的代码混淆了我一下:C指针质疑
char * strcpy(char * p, const char * q) {
while (*p++=*q++);
//return
}
这是strcpy函数的执行剥离。从这段代码中,我们看到指针p和q被赋值,而不是解除引用,q被赋值给p,直到达到\ 0 char。让我感到困惑的是while循环的第一次迭代。据我所知,数组的指针指向数组的第一个元素。在这段代码中,指针在赋值发生之前是增量赋值的(right?),所以从我的理解中,第一个元素永远不应该被赋值给p(因为后赋值发生在赋值之前),但它确实存在,我不理解后面的魔法。任何人都足以解释为什么? :-)
由于
你对post/pre的定义似乎是倒退的。 Post =之后,Pre =之前。这里的后递增表示第一个字符将被复制,然后指针将递增。 – Marlon
为什么C++标签(和标题)?这是一个C库函数。 –
看起来像我的完美有效的C++代码@Paul。那么为什么不* C++标签? –