void ShowAllData(const int * arr, int len)
{
int i;
for(i=0 ; i<len ; i++)
printf("%d", arr[i]);
}
위 함수의 매개변수 선언에서 매개변수 arr을 대상으로 const 선언을 한 이유가 무엇이겠는가?
arr 배열의 요소가 변경되지 않도록 보호한다. (정답)
void ShowData(const int * ptr)
{
int * rptr = ptr;
printf("%d \n", *rptr);
*rptr = 20;
}
int main(void)
{
int num = 10;
int * ptr = #
ShowData(ptr);
return 0;
}
위 예제에서 한 가지 지적할만한 사항이 있다. 무엇인가?
ShowData 함수에서 *rptr=20;이 될 수 없다. 왜냐하면 매개변수의 const int * ptr 로 const 선언을 해주었기 때문에, ptr이 가리키는 num의 값이 바뀌면 오류가 발생한다. (얼추 정답)
[추가]
내가 작성한 위의 풀이 전, int * rptr = ptr; 이 문장에서 경고 메세지가 발생한다. ptr이 가리키는 변수에 저장된 값을 rptr도 가리키게 되는 문장이다.
[추가]
결과적으로 rptr을 이용해서 ptr이 가리키는 변수에 저장된 값을 변경할 수 있는 상황이 되어버렸고, ptr에 const선언을 추가한 것이 의미 없는 상황이 되어버렸다. 이렇듯 const 선언을 무의미하게 만드는 문장을 삽입하는 것은 잘못되었다. (답지)