const とポインタ

定数なんてろくに使ったことないけど、ポインターの場合 const を付ける場所で意味が変わってくるんだな。

int main(int argc, char **argv) {
    int a = 2;
    int b = 3;
    int c = 5;
    int d = 7;

    const int * pa = &a;
    int * const pb = &b;
    const int * const pc = &c;

    *pa = 11;  // error
    pa = &d;
    
    *pb = 11;
    pb = &d;   // error

    *pc = 11;  // error
    pc = &d;   // error
    
    return 0;
}

ポインタ自体が書き換え禁止なのか、ポインタの指す先が書き換え禁止なのか、もしくは両方なのか、という区別ができる。