ステートメント*p++ = *source++; 次の最初のプログラムでは、エラーは発生しませんが、コンパイル時に 2 番目のプログラムで左辺値として使用される非参照型へのキャストを 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; }
2番目のプログラム
#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; }