#include <iostream>
using namespace std;
int main() {
int a=11;
int *pa=&a;
int *root = new int{2703};
const int* const *ptr; // I want a pointer to a pointer that tshall not change
ptr = &root; // I can now access root poitner via *ptr and integer via **ptr bu I'm not allowed to change them
//*ptr = &a; // not allowed, I would change root !!
//**ptr=12; // not allowed either
cout << **ptr<<endl; // no pb: I print the integer
cout << *ptr<<endl; // no pb: I print
ptr = &pa; // the pointer itself is not const
cout << **ptr<<endl; // no pb: I print the integer
const int b=0; // I'm not allowed to change b
const int *pb=&b; // I'm allowed to change pb but not *pb
const int * const cpb = &b; // I'm not allowed to change cpb nor *cpb
ptr = &cpb; // that's ok ! because ptr encforces everything that cpb enforces.
const int** test; // this is a pointer to a pointer to a const int:
//test = &cpb; // not allowed because because constness would be broken
test = &pb; // allowed
*test = nullptr; // but also allowed: the pointer pb is now null
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CglpbnQgYT0xMTsgCglpbnQgKnBhPSZhOyAKCWludCAqcm9vdCA9IG5ldyBpbnR7MjcwM307ICAgICAKCQoJY29uc3QgaW50KiBjb25zdCAqcHRyOyAgLy8gSSB3YW50IGEgcG9pbnRlciB0byBhIHBvaW50ZXIgdGhhdCB0c2hhbGwgbm90IGNoYW5nZSAKCQoJcHRyID0gJnJvb3Q7ICAgICAgICAgICAgLy8gSSBjYW4gbm93IGFjY2VzcyByb290IHBvaXRuZXIgdmlhICpwdHIgYW5kIGludGVnZXIgdmlhICoqcHRyIGJ1IEknbSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhlbSAKICAgIC8vKnB0ciA9ICZhOyAgICAgICAgICAgIC8vIG5vdCBhbGxvd2VkLCBJIHdvdWxkIGNoYW5nZSByb290ICEhIAogICAgLy8qKnB0cj0xMjsgICAgICAgICAgICAgLy8gbm90IGFsbG93ZWQgZWl0aGVyICAKICAgIGNvdXQgPDwgKipwdHI8PGVuZGw7IAkvLyBubyBwYjogSSBwcmludCB0aGUgaW50ZWdlcgogICAgY291dCA8PCAqcHRyPDxlbmRsOyAJLy8gbm8gcGI6IEkgcHJpbnQgCiAgICBwdHIgPSAmcGE7ICAgICAgICAgICAgICAvLyB0aGUgcG9pbnRlciBpdHNlbGYgaXMgbm90IGNvbnN0IAogICAgY291dCA8PCAqKnB0cjw8ZW5kbDsgCS8vIG5vIHBiOiBJIHByaW50IHRoZSBpbnRlZ2VyCiAgICAKICAgIGNvbnN0IGludCBiPTA7ICAgICAgICAgIC8vIEknbSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgYgogICAgY29uc3QgaW50ICpwYj0mYjsgICAgICAgLy8gSSdtIGFsbG93ZWQgdG8gY2hhbmdlIHBiIGJ1dCBub3QgKnBiCiAgICBjb25zdCBpbnQgKiBjb25zdCBjcGIgPSAmYjsgICAvLyBJJ20gbm90IGFsbG93ZWQgdG8gY2hhbmdlIGNwYiBub3IgKmNwYgogICAgcHRyID0gJmNwYjsgICAgICAgICAgICAgLy8gdGhhdCdzIG9rICEgIGJlY2F1c2UgcHRyIGVuY2ZvcmNlcyBldmVyeXRoaW5nIHRoYXQgY3BiIGVuZm9yY2VzLiAgCiAgICAKICAgIAogICAgY29uc3QgaW50KiogdGVzdDsgICAgICAgLy8gdGhpcyBpcyBhIHBvaW50ZXIgdG8gYSBwb2ludGVyIHRvIGEgY29uc3QgaW50OiAgCiAgICAvL3Rlc3QgPSAmY3BiOyAgICAgICAgICAvLyBub3QgYWxsb3dlZCBiZWNhdXNlIGJlY2F1c2UgY29uc3RuZXNzIHdvdWxkIGJlIGJyb2tlbiAKICAgIHRlc3QgPSAmcGI7IAkJCS8vIGFsbG93ZWQKICAgICp0ZXN0ID0gbnVsbHB0cjsgCQkvLyBidXQgYWxzbyBhbGxvd2VkOiB0aGUgcG9pbnRlciBwYiBpcyBub3cgbnVsbCAKICAgIAoJcmV0dXJuIDA7Cn0=