char *ptr = "Hello, world!";이렇게 선언하고*ptr='C';이렇게 하면 오류가 뜨는데 왜 그런거죠?메모리에 배열로 선언했을 때랑 똑같이 저장되어 있는거 아닌가요?
Hello world 라는 리터럴 스트링이 저장된 주소가 read only 로 설정되었기 때문.
주소값안보고있어서 그런거임 포인터에 배열 저장못함 포인터는 그냥 가르키는거
배열 선언해서 strcpy 해서 쓰면 니가 원하는 읽고 쓰기를 다 할 수 있어.
감사합니다 그런건 메모리 구조 공부하면 알 수 있니요?
두 분 말씀 모두 맞는건가요?
ㅎㅎ 의 이야기는 이 주제와 상관이 없어. 가령 char temp[256]; strcpy( temp, "Hello world" ); char* ptr = temp; *ptr = 'C'; 이런건 되지. temp 는 스택에 할당된 공간의 시작주소라 writable 하니까. 근데 "Hello world" 자체는 리터럴 상수라는거야.
네 이해했어요