声明*p++ = *source++; 在下面的第一个程序中不会导致任何错误,但会导致错误ISO C++ 禁止在编译时转换为在第二个程序中用作左值的非引用类型。为什么会发生这种情况?
第一个程序
#include char *my_strcpy(char *destination, char *source) { char *p = destination; while (*source != '\0') { *p++ = *source++; } *p = '\0'; return destination; } int main() { char source[] = "A string to be used for demonstration purposes"; char destination[80]; my_strcpy(destination, source); puts(destination); return 0; }
第二个节目
#include char source[] = "A string to be used for demonstration purposes"; char destination[80]; int main() { char *p = destination; putchar('\n'); while(*source != '\0') { *p++ = *source++; } *p = '\0'; puts(destination); return 0; }