반응형
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
반응형
'program tip' 카테고리의 다른 글
dotnet run 또는 dotnet watch with development environment from command line? (0) | 2020.12.14 |
---|---|
PHP에서 현재 함수의 이름 검색 (0) | 2020.12.14 |
Spring 구성 파일로 시스템 속성 설정 (0) | 2020.12.14 |
확장 가능한 개체를 병합하는 방법은 무엇입니까? (0) | 2020.12.14 |
누군가가 최대 절전 모드에서 @MapsId를 설명해 주시겠습니까? (0) | 2020.12.13 |