Будет напечатано 2. const int *b
буквально означает:
Указатель на целое число, значение которого нельзя изменить путем его разыменования.
Это не означает, чтозначение, на которое указывает указатель, может не измениться.На самом деле это совершенно справедливо, чтобы изменить.Вероятный сценарий использования этого - структуры, которые сохраняют ссылку только для чтения на некоторую большую структуру.Ссылка может измениться, но функции, работающие с этой структурой, могут не изменить то, что находится за указателем.
Представьте себе драйвер или аналогичный объект, который раздает отображение памяти только для чтения любых данных, которые доставило устройство: адресотображение не является постоянным, но, поскольку это отображение только для чтения, пользовательская программа может не записывать в него.OTOH, когда устройство обновляет данные, содержимое буфера изменится, но не обязательно адрес сопоставления.