如现有一个结构体
typedef struct
{
uint8_t a;
uint8_t b[10];
uint8_t c[3];
}basic;
而定义一个二维数组
basic array[][5],如何对其初始化?
是这样吗:
basic array[][4]=
{
{1,0,0},
{2,0,0},
{3,0,0,0,1},
{2,2,1,2,2},
{3,1,1,4,2,2,4},
}
如果按这样初始化,
array的array0,array0,...array2...
分别都是什么呢?
array一共有几行呢?
我看到一个源码里面的意思好像是,这样初始化过后,array有5行。。。我觉得不理解。。。也不确定源码有没有错误。有没有人能帮忙解答?
その
リーリーstruct
は通常のint[14]
と考えてください。これは次のように出力できます。uint8_t は unsigned char の typedef であるため、unsigned int に変換されて出力されます。 。 。 。
2 次元配列の初期化を紹介するブログ記事はこちらですhttp://blog.csdn.net/chenshij...
この初期化が理解しにくい理由は、通常、2 次元配列の初期化がカーリーで囲まれているためです。中括弧は通常、線を表します初期化、この質問では構造体の初期化で中括弧が使用されているため、混乱が生じますが、ここでの中括弧は 1 つの構造要素の初期化ではなく、行全体の初期化を表します。この 2 次元配列内の構造体を次々に初期化するには、先ほどと同様に展開のレイヤーを追加する必要があります。
要素として初期化する 1 次元配列の各行を想像し、次にこの要素を収容する 1 次元配列として 2 次元配列全体を想像すると理解できます。
2 次元配列は、実際には 1 次元配列の配列であり、同じサイズの複数の配列でネストされた配列と考えることができます。各配列要素は配列であるため、それを宣言する場合、初期化した配列の数に応じて、前者の数値が存在する必要はありませんが、各要素のサイズを決定する必要があるため、後者の数値は存在する必要があります。