program tip

const int = int const?

radiobox 2020. 12. 14. 08:02
반응형

const int = int const?


예를 들어

int const x = 3;

유효한 코드?

그렇다면 다음과 같은 의미입니까?

const int x = 3;

?


둘 다 유효한 코드이며 둘 다 동일합니다. 포인터 유형의 경우 둘 다 유효한 코드이지만 동일하지는 않습니다.

상수 인 2 개의 int를 선언합니다.

int const x1 = 3;
const int x2 = 3;

포인터를 통해 데이터를 변경할 수없는 포인터를 선언합니다.

const int *p = &someInt;

다른 것을 가리 키도록 변경할 수없는 포인터를 선언합니다.

int * const p = &someInt;

예, 동일합니다. C ++의 규칙은 기본적 const으로 왼쪽에있는 유형에 적용됩니다. 그러나 선언의 맨 왼쪽에 배치하면 유형의 첫 번째 부분에 적용되는 예외가 있습니다.

예를 들어 int const *상수 정수에 대한 포인터가 있습니다. 에서 int * const당신 정수로 상수 포인터를 가지고있다. 이것을 포인터에 대한 포인터로 외삽 할 수 있으며 영어는 혼란 스러울 수 있지만 원칙은 동일합니다.

하나를 수행하는 것의 장점에 대한 또 다른 논의 는 주제에 대한 내 질문참조하십시오 . 대부분의 사람들이 예외를 사용하는 이유가 궁금하다면 Stroustrup 의이 FAQ 항목이 도움이 될 수 있습니다.


네, 똑같습니다. 그러나 포인터에는 차이가 있습니다. 내말은:

int a;

// these two are the same: pointed value mustn't be changed
// i.e. pointer to const value
const int * p1 = &a;
int const * p2 = &a;

// something else -- pointed value may be modified, but pointer cannot point
// anywhere else i.e. const pointer to value
int * const p3 = &a;

// ...and combination of the two above
// i.e. const pointer to const value
const int * const p4 = &a;

"효과적인 C ++"항목 21에서

char *p              = "data"; //non-const pointer, non-const data
const char *p        = "data"; //non-const pointer, const data
char * const p       = "data"; //const pointer, non-const data
const char * const p = "data"; //const pointer, const data

의미와 타당성이 동일합니다.

내가 아는 한 const는 포인터를 포함 할 때마다 복잡해집니다.

int const * x;
int * const x; 

다르다.

int const * x;
const int * x; 

동일합니다.

참고 URL : https://stackoverflow.com/questions/3247285/const-int-int-const

반응형