I'm studying the pointers, constness. I am confused at some point. I learned that assigning the address of const to a nonconst pointer is prohibited in C++ but it can be solved using const\_cast. It's OK. 

However, assigning the address of a nonconst variable to a const pointer is allowed. I didn't understand why it is allowed. Please look at the below example. In this example, ptr is a pointer to const int. However, the value which ptr points to changes. There is a contradiction here, because the const int value which ptr points to changes. Can you explain this contradiction, or if i am wrong, can you explain why?

```
#include <iostream>
using namespace std;

int main() {

    int year = 2012;
    const int* ptr = &year;
    year=100;
    year=101;
    cout << *ptr;
    // 101 is printed, the value ptr points to change whenever year changes

    return 0;
}

```