별 앞에 C++에서 수식자인 const
은 포인터가 가리키는 값을 변경할 수 없다는 것을 의미하며 포인터 자체는 다른 것을 가리 키도록 만들 수 있습니다. 펑션합니다 (CONST는 제 스타 후 아니므)는 INT * 값을 수정할 수 있지만, 통과 PARAM 가리키는 정수 값 (있는 경우)을 수정하도록 허용되어서는 안된다 const 포인터가 아닌 const 포인터 double 포인터 매개 변수
void justloadme(const int **ptr)
{
*ptr = new int[5];
}
int main()
{
int *ptr = NULL;
justloadme(&ptr);
}
justloadme
GCC : 오류 : 유효하지 않은 변환 int**
에서
VC++를 const int**
에 : 오류 C2664 : 'justloadme': 변환 할 수 없습니다 매개 변수 1 'INT **'에서 'const를 INT **'이다. 변환에서 한정자가 없어짐
변환이 한정자를 잃는 이유는 무엇입니까? const
한정자를 얻지 못했습니까? 게다가, 우리가 non-const를 전달하는 strlen(const char*)
과 비슷하지 않습니다. char*
이 기분 http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.17 – Anycorn