ゆとりーなの日記

日記的な事を書いて行くと思はれる

ダブルポインタにどこまでconstが付けれるのか

少し気になったので試してみました。

int main(int argc, const char * const * const argv) {
    argv = nullptr;  // コンパイルエラー
    *argv = nullptr; // コンパイルエラー
    **argv = 0;      // コンパイルエラー
    return 0;
}

普通に3つ付けられました。パターンとしてはダブルポインタ自身の書き換え禁止、ダブルポインタが指してる物の書き換え禁止、ダブルポインタが指してるものの指してる物を書き換え禁止の3通りあるので、3つ書けるのも当然と言えば当然ですね。
順番としては、左からダブルポインタが指してる物の指してる物の書き換え禁止、ダブルポインタが指している物の書き換え禁止、ダブルポインタ自身の書き換え禁止を指定していることになるみたいです。まあ雰囲気そんな感じはしますね。