보시면 "arr of char" 의 데이터 타입이 const char* 이기 때문에 char* 타입인 name 에 초기화할 수 없다고 나오잖아요?
그래서 arr[] 를 선언하고 똑같이 "arr of char" 로 초기화 해 봤어요.
근데 "arr of char" 의 데이터 타입은 const char* 이잖아요?
그럼 arr[] 의 값을 바꿀 수 없는 거잖아요?
그래서 arr[0] 의 값을 a 에서 A로 바꾸는 코드를 써봤는데 이건 되더라구요 ㅠㅠ
왜 이게 가능한건지 설명해주실 수 있나요.. ㅠㅠㅠ
오토! 오토!
오토가 뭘 의미하는거죠 ㅠㅠ
auto 쓰라고
const char *name = "ㅇㅅㅇ" 로 하세요
문자열상수의 타입이 const char *이라그럼
char name[]="asdfasdf";는 상관없음
아 그렇네요 제가 생각을 잘못했네요
const char *를 char *로 변환하지 못함 - dc App
제대로 아는 사람이 없는 것 같은데... 일단 "arr of char"는 문자열 리터럴이고 읽기 전용 메모리공간에 할당이 됩니다. 그렇게 정해진 거임. 읽기 전용 메모리 공간은 수정할 수 없기 때문에, 문자열 리터럴을 쓰면 const char*로 해당 공간을 가리킬 수 있도록 포인터를 반환해 줌. 그걸 const char* name에 할당해서 쓸 수 있는 거임. 근데 char name[]은 문자 배열이고, char name[] = ['a', 's', 'd', 'f'] 이렇게 작성해야 하는 것이 제일 기본 규칙임. 근데 저렇게 작성하면 개 힘드니까 char name[] = "asdf";로 써도 가능하도록 허용한 거임. char name[] = "asdf"를 할 때는 애초에 읽기전용 메모리공간에 할당하지도 않음