構造体のvecを作成したいと思います。これは私の構造体である:C:構造体のVec
typedef struct item {
char *name;
int acc;
} *Item;
私が試した:
Item vec = (Item) malloc(sizeof(Item)*max);
maxは以前に定義されています。私がすることで、このerror: initializer element is not constant
構造体のvecを作成したいと思います。これは私の構造体である:C:構造体のVec
typedef struct item {
char *name;
int acc;
} *Item;
私が試した:
Item vec = (Item) malloc(sizeof(Item)*max);
maxは以前に定義されています。私がすることで、このerror: initializer element is not constant
変更それを得る:
typedef struct item {
char *name;
int acc;
} Item;
(なしポインタ)をし、その後はsizeof(構造体項目)またはのsizeof(項目)を行います。次に、
Item *vec = malloc(sizeof(Item) * max);
常に有効な単純な解決策は 'sizeof(* vec)'です。しかし、ポインタのtypedefはgenearalに問題があります。 –
@iharob、あなたの声明に同意してください。 – rodolk
[C言語でのキャストはありません](http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) - このQ&Aを参照 –
typedef struct item {...} * Item; 'ひどい考えです。 –
'sizeof(Item)'はポインタ型であると考えています。 –
@EugeneSh。私のコメントが真実である理由の1つ。 –