#include <iostream>
int main() {
int value = 42;
int another = 100;
// 1. Указатель на константное значение
const int* p1 = &value;
// *p1 = 10; // Ошибка: нельзя изменить значение через p1
p1 = &another; // OK: можно изменить сам указатель
// 2. Константный указатель на изменяемое значение
int* const p2 = &value;
*p2 = 99; // OK: значение можно менять
// p2 = &another; // Ошибка: нельзя изменить адрес указателя
// 3. Константный указатель на константное значение
const int* const p3 = &value;
// *p3 = 50; // Ошибка
// p3 = &another; // Ошибка
std::cout << "value = " << value << '\n'; // 99
std::cout << "*p1 = " << *p1 << '\n'; // 100
std::cout << "*p2 = " << *p2 << '\n'; // 99
std::cout << "*p3 = " << *p3 << '\n'; // 99
return 0;
}
#include <iostream>
int main() {
int value = 42;
int another = 100;
// 1. Указатель на константное значение
const int* p1 = &value;
// *p1 = 10; // Ошибка: нельзя изменить значение через p1
p1 = &another; // OK: можно изменить сам указатель
// 2. Константный указатель на изменяемое значение
int* const p2 = &value;
*p2 = 99; // OK: значение можно менять
// p2 = &another; // Ошибка: нельзя изменить адрес указателя
// 3. Константный указатель на константное значение
const int* const p3 = &value;
// *p3 = 50; // Ошибка
// p3 = &another; // Ошибка
std::cout << "value = " << value << '\n'; // 99
std::cout << "*p1 = " << *p1 << '\n'; // 100
std::cout << "*p2 = " << *p2 << '\n'; // 99
std::cout << "*p3 = " << *p3 << '\n'; // 99
return 0;
}