別の質問への回答でこれを見ました:
char (*arrs)[rowSize] = malloc(bytesPerTable);
アーズとは?/ 括弧があるのはなぜですか / この宣言の説明は何ですか?
別の質問への回答でこれを見ました:
char (*arrs)[rowSize] = malloc(bytesPerTable);
アーズとは?/ 括弧があるのはなぜですか / この宣言の説明は何ですか?
アーズとは?この宣言の説明は何ですか?
これは の配列へのポインターであり、へのポインターとrowSize
char
は大きく異なりますchar
。
なぜ括弧があるのですか
それらがないと、へのポインターの配列になるためchar
です。
int *a[10]
-つまり、a
は10要素の配列であり、要素タイプはint *
次のとおりです。変数のサイズはa
、32ビットマシンでは40バイト、64ビットマシンでは80バイトになります。
int (*a)[10]
-これは、a
がポインタ変数であり、そのサイズが4バイト(または8バイト)になることを意味します。これは、以下のようなint
サイズの配列のアドレスを保持でき10
ます。
int (*a)[10] = NULL;
int b[10] = {0};
a = &b;