2011-03-22 3 views

답변

4

실제로 C의 모든 매개 변수는 값으로 전달되므로 실제 인수는 const을 포함하는지 여부에 관계없이 변경되지 않습니다.

그러나 여기서는 const이 "절대로 필요하지 않음"을 의미하지 않습니다. 필요하거나 불필요한 것은 달성하고자하는 것에 달려 있습니다.

함수 내에서 매개 변수를 수정하려는 시도를 막으려면 const은 물론이 필요합니다.

함수 매개 변수를 함수 내부에서 수정해서는 안된다는, 즉 함수의 실행 지점에서 모든 매개 변수가 원래 값을 유지해야한다는 매우 일반적인 (매우 합리적인) 코딩 지침이 있습니다. 이 가이드 라인에 따르면 실제로는 const을 포함하고 은 모두 매개 변수 선언에 포함됩니다.

+0

어쨌든 C에서 그 인수가 변경되지 않을 지의 여부는 나를 위해 치명적입니다 이 경우 ... – assem

+0

'const T v'라고 쓰여진 책을 읽고 있기 때문에 이것을 묻습니다. 대신 const T * p를 사용해야합니다. – assem

1

const를 단지 오류에 대한 통지, 프리 D 파일러에 의해 사용되는 ...이 완벽하게 유효한지

참고 :

void foo(const char * bar) 
{ 
    char * baz = (char *)bar; 

    baz++; 
} 

그래서 그럴 필요는 결코 없지만, 그냥 코드를 더 쉽게 읽을 ...

+0

'const char * bar'의'const'가 유용하지만'const char bar'의'const'는 C에서 유용하지 않습니다. – assem

+0

외부에서 오는 값에 영향을 미치지 않더라도 경고를 원할 때나 그렇지 않으면 함수에서 값을 변경하려고 할 때에 따라 달라집니다 ... – Macmade