私が知っているn個の要素の配列を2つの文字の配列にmallocできますか?1つのサイズがわかっている場合のmalloc二次元配列
私はこのような何かを試してみましたが、コンパイラが、それは無効だと言う:
char *candidates_top[2] = malloc(sizeof(char[2]) * n);
私が知っているn個の要素の配列を2つの文字の配列にmallocできますか?1つのサイズがわかっている場合のmalloc二次元配列
私はこのような何かを試してみましたが、コンパイラが、それは無効だと言う:
char *candidates_top[2] = malloc(sizeof(char[2]) * n);
で取得2 char
の配列へのポインタになりたいように見えますアウト:candidates_top
は、[2]
の2つの要素の配列char
の配列へのポインタ(*...)
です。あなたがcandidates_top
の場合には配列要素が配列それ自体が唯一の違いで
でn
整数の配列を作成しますようなものです。
インデックスは、あなたが期待するのと同じようにです:
candidates_top[7][0] = '4';
candidates_top[7][1] = '2';
宣言
char *candidates_top[2];
はchar
には2つのポインタの配列であることをcandidates_top
を宣言します。
char (*candidates_top)[2] = malloc(sizeof(*candidates_top)*n);
あなたは内側から新しい変数candidates_top
の種類を読んでする必要があります:あなたはcandidates_top
は、あなたがこのよう
char (*candidates_top)[2];
これはあなたの耳が出血行った場合:
char (*candidates_top)[2] = malloc(sizeof(*candidates_top)*n);
あなたはtypedef
でそれをクリーンアップすることができます:
typedef char twos[2];
//....
twos *candidates_top=malloc(sizeof(twos)*n);
これは動作します。もう少し説明していただけますか? – pistacchio
@pistacchioはい、あなたのコメントを書いていたので、私は説明を書いていました:-) – cmaster