> 백엔드 개발 > C++ > C에서 Const 배치: `const T` 대 `T const` – 어느 것을 사용해야 합니까?

C에서 Const 배치: `const T` 대 `T const` – 어느 것을 사용해야 합니까?

Barbara Streisand
풀어 주다: 2024-12-18 11:51:16
원래의
939명이 탐색했습니다.

Const Placement in C  : `const T` vs. `T const` – Which Should I Use?

"const T"와 "T const"가 모두 유효한 이유는 무엇이며, 어느 것을 사용해야 합니까?

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의 위치로 인해 의미적 의미가 변경되지 않으므로 두 배치가 모두 허용됩니다.

함수 포인터의 의미

함수에서도 비슷한 상황이 발생합니다. 포인터:

  • void * function1(void)는 void 포인터를 반환하는 함수를 선언합니다.
  • void(* function2)(void)는 void를 반환하는 함수에 대한 함수 포인터를 선언합니다. .

다시 한번 왼쪽에서 오른쪽으로 파서 해석이 명확하게 나타납니다. 구문.

선호되는 사용법

궁극적으로 한 구문이 다른 구문보다 명확하게 선호되는 것은 없습니다. 가독성과 개발자 선호도에 따라 선택해야 합니다.

그러나 포인터 및 함수 포인터 구문과의 일관성을 원하는 경우 참조 유형 왼쪽에 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿