C++と色々

主にC++やプログラムに関する記事を投稿します。

ポインタの文法メモ

配列へのポインタも関数ポインタも意味はわかるけど書かないから文法を忘れてしまう…
ネストしてくるとごちゃごちゃしてくる。
なのでメモ
(タグC++でいいのだろうか;)

void func(){}

int main()
{
    //配列
    int a[5];
    a[4] = 4;
    
    //ポインタ
    int* b = &(a[0]);
    *b = 10;

    //配列へのポインタ
    int (*c)[5] = &a;
    (*c)[4] = 10;
 
    //配列へのポインタの配列
    int (*d[3])[5] = {&a, &a, &a};
    ((*d)[2])[4] = 10;
 
    //配列へのポインタの配列へのポインタ
    int (*(*e)[3])[5] = &d;
    (*((*e)[2]))[4] = 10;
    
    //関数ポインタ
    void (*f)() = &func;
    f = &func;
    (*f)();

    //関数ポインタの配列
    void (*g[5])() = {nullptr};
    g[0] = &func;
    (*(g[0]))();

    //関数ポインタの配列へのポインタ
    void (*(*h)[5])() = &g;
    (*h)[4] = &func;
    (*(*h)[4])();

}