인프런 커뮤니티 질문&답변
18분 30초경 코드가 뭐가 문제인가요/?
작성
·
139
1
18분 30초경 코드가 뭐가 문제인가요?? y는 그냥 const를 사용한 변수고, p2는 y의 주소를 담는 변수이고, p1도 그냥 y의 주소를 담는 변수인 것 아닌가요?
답변 1
1
안녕하세요? 질문&답변 도우미 Soobak 입니다.
C언어에서는 const int* 로 선언된 p2 를 int* 로 선언된 p1 에 할당하는 것이, 경고를 발생시키기는 하지만 허용은 됩니다. 이 때, 형변환을 통해 암묵적으로 const 한정자가 제거됩니다.
이 때, *p1 = 20; 처럼 p1 을 통해 y 를 수정하는 것은 const int y = 10; 으로 선언된 y 가 상수라는 것을 위반하는 것이므로, 정의되지 않은 동작이나 버그가 발생하게 됩니다.
따라서, C++ 에서는 이러한 문법을 허용하지 않으며 컴파일 타임에서 오류가 발생하게 됩니다.





