strcpy 함수를 쓰는 이유
구조체 변수를 포함할 수 있는 메모리를 할당할 때 멤버변수가 메모리를 점유하게됩니다. 이때 char title[100]; 이 초기화 되지 않은 상태로 메모리를 점유합니다. 1) p->title="C Programming"; 오류가 나는 이유 해당 구문이 의미하는 것은 p->title에 "C Programming"의 시작주소를 대입하는 것을 의미합니다. 하지만 p->title은 포인터 '상수'로 수정불가능한 Lvalue입니다. 수정 불가능한 Lvalue에 값을 대입하려하니 에러가 발생합니다. 즉, p->title이 가리키는 주소를 바꿀 수 없는 것 입니다. 2) strcpy는 가능한 이유? strcpy는 아래와 같이 char*, char* 파라미터를 받습니다. char *strcpy( char *dest, const char *src ); strcpy(p->title, "C Programming"); 는 포인터 변수 dest, src가 각각 p->title의 주소, "C Programming"의 주소를 가리킵니다. 이들을 이용해 포인터 dereferencing을 이용해 src의 각 문자를 dest에 차례로 복사하게됩니다.