C에서는 const 키워드를 사용하여 수정을 방지할 수 있습니다. 객체나 포인터의. 일부 개발자에게는 놀랍게도 구문이 다를 수 있습니다.
const Object* obj; // can't change data Object* const obj; // can't change pointer const Object* const obj; // can't change data or pointer Object const *obj; // same as const Object* obj;
어느 구문이 먼저 나왔고 왜 둘 다 올바른지에 대한 의문이 생깁니다.
Const 배치의 역사적 기원
C와 C의 언어 문법은 왼쪽에서 오른쪽으로 파서를 허용합니다. 즉, 컴파일러는 입력을 왼쪽에서 오른쪽으로 읽습니다.
선언을 구문 분석할 때 토큰이 소비되면 선언 상태가 포인터 유형으로 변경됩니다. const가 를 먼저 만나면 한정자는 포인터 선언에 적용됩니다. * 앞에 나타나면 한정자가 참조된 데이터에 적용됩니다.
const의 위치로 인해 의미적 의미가 변경되지 않으므로 두 배치가 모두 허용됩니다.
함수 포인터의 의미
함수에서도 비슷한 상황이 발생합니다. 포인터:
다시 한번 왼쪽에서 오른쪽으로 파서 해석이 명확하게 나타납니다. 구문.
선호되는 사용법
궁극적으로 한 구문이 다른 구문보다 명확하게 선호되는 것은 없습니다. 가독성과 개발자 선호도에 따라 선택해야 합니다.
그러나 포인터 및 함수 포인터 구문과의 일관성을 원하는 경우 참조 유형 왼쪽에 const를 사용하는 것이 더 적절할 수 있습니다.
const Object* obj; // no change to obj pointer or value Object const *obj; // no change to obj pointer or value
위 내용은 C에서 Const 배치: `const T` 대 `T const` – 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!