>백엔드 개발 >C++ >C와 C의 \'const int\' 대 \'int const\': 정말 동일합니까?

C와 C의 \'const int\' 대 \'int const\': 정말 동일합니까?

DDD
DDD원래의
2024-10-27 02:06:30758검색

C 및 C의 함수 매개변수인 'const int'와 'int const'

const로 함수 매개변수를 선언할 때 'const int'를 구별하는 것이 중요합니다. '와 'int const'입니다. 동일해 보일 수 있지만 수정자의 순서에 따라 선언의 해석이 변경됩니다.

'const int'는 상수(수정할 수 없음)이고 int 유형인 변수를 선언합니다. 여기서 강조점은 변수const 한정자가 적용된다는 점입니다.

'int const'는 반면에 int 유형이면서 상수인 변수입니다. 이 경우 const 한정자는 변수가 아닌 type을 수정합니다.

그럼 이 두 함수는 동일한가요?

<code class="c">int testfunc1 (const int a) { return a; }
int testfunc2 (int const a) { return a; }</code>

예, 동일합니다. 선언을 거꾸로 읽으면 더 명확해집니다.

'const int'의 경우:

  • "a"는 "상수"인 정수입니다.

'int const'의 경우:

  • "a"는 "입니다. 상수 정수".

두 경우 모두 "a"는 정수이자 상수입니다.

그러나 역방향 읽기 트릭은 복잡한 선언에서 매우 유용합니다.

<code class="c">// "s" is a pointer to a char that is constant
const char *s;

// "t" is a constant pointer to a char
char *const t = &c;

// The char in "s" is constant, so you can't modify it
*s = 'A'; // Can't do

// The pointer in "s" is not constant, so you can modify it
s++; // Can do

// The char in "t" is not constant, so you can modify it
*t = 'A'; // Can do

// The pointer in "t" is constant, so you can't modify it
t++; // Can't do</code>

C에서 const 데이터 멤버는 클래스 선언이나 생성자에서 초기화될 수 있다는 점을 기억하세요. 반면 C에서는 const 데이터 멤버가 기호 상수로 간주되고 선언에서 초기화되어야 하므로 #define과 매우 유사합니다.

위 내용은 C와 C의 \'const int\' 대 \'int const\': 정말 동일합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.