пример константы int и указателей - PullRequest
0 голосов
/ 10 февраля 2020
int main() {
    const int i = 1;
    const int* p = &i;
    int j = 2;
    const int* q = &j;
    j = 3;
    printf("%d", *p + *q);
    return 0;
}

У меня есть этот код, и я пытаюсь понять, как он компилируется. p и q являются указателями на постоянные целые числа, но j не объявлен как константа. Кроме того, j меняется на 3.

Как это работает?

Спасибо!

1 Ответ

1 голос
/ 13 февраля 2020

В 5-й строке вы назначаете адрес переменной j на q. Это не налагает никаких ограничений на j , только на указатель q . Через q компилятор не позволит вам изменить указанное значение, однако j остается доступным для записи, и строка j = 3; является допустимой.

См. В чем разница между const int *, const int * const и int const *?

...