интервал константы = международная константа?

Например,

int const x = 3;

действительный код?

Если так, делает это означает то же как

const int x = 3;

?

59
задан user383352 14 July 2010 в 14:43
поделиться

4 ответа

Они оба являются действительным кодом и оба эквивалентны. Для типа указателя они оба являются допустимым кодом, но не эквивалентны.

Объявляет 2 типа int, которые являются постоянными:

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

Объявляет указатель, данные которого нельзя изменить с помощью указателя:

const int *p = &someInt;

Объявляет указатель, который нельзя изменить, чтобы указать на что-то еще:

int * const p = &someInt;
105
ответ дан 24 November 2019 в 18:04
поделиться

Да, они такие же. По сути, правило C ++ заключается в том, что const применяется к типу слева от него. Однако есть исключение: если вы поместите его в крайний левый угол объявления, оно применяется к первой части типа.

Например, в int const * у вас есть указатель на постоянное целое число. В int * const у вас есть постоянный указатель на целое число. Вы можете экстраполировать это на указатель на указатели, и английский может запутать, но принцип тот же.

Для другого обсуждения достоинств одного над другим см. мой вопрос по этому поводу. Если вам интересно, почему большинство людей используют исключение, эта запись в FAQ Страуструпа может быть полезна.

32
ответ дан 24 November 2019 в 18:04
поделиться

Да, это абсолютно то же самое. Однако есть разница в указателях. Я имею в виду:

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;
17
ответ дан 24 November 2019 в 18:04
поделиться

Это одно и то же по смыслу и действительности.

Насколько я знаю, const становится сложной только тогда, когда в ней задействован указатель.

int const * x;
int * const x; 

разные.

int const * x;
const int * x; 

одинаковые.

3
ответ дан 24 November 2019 в 18:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: