작성
·
74
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++ 에서는 이러한 문법을 허용하지 않으며 컴파일 타임에서 오류가 발생하게 됩니다.