これらは、2D 配列に使用される表記法です。
char (*names)[5] ;
と
char* names[] = {"Jan","Feb"};
と
char names[3][5] = { Initializers..};
私はこれらの表記の間で非常に混乱しています。
最初のものは、名前が5文字の配列へのポインタであることを宣言します。
names -> a char pointer -> "Some string"
3 番目のものは異なるメモリ マップを持ちます。つまり、上記のものとは異なり、通常の配列のように行優先順に格納されます。
2 番目の表記は、1 番目および 3 番目の表記とどのように似ているか、または異なるか?
また、それらを関数に渡すことは、まったく別の話です。2 次元配列をタイプ 2 であると宣言すると、ダブル ポインター ( ) として渡されますchar** names
が、タイプ 1 またはタイプ 3 である場合は、宣言で列を指定する必要があります。
これらの問題をより明確にするのを手伝ってください。ありがとう。