Cでは、構造体を定義します。新しいインスタンスを作成する正しい方法は何ですか?私は2つの方法を見てきました:
struct listitem {
int val;
char * def;
struct listitem * next;
};
最初の方法(xCodeは、これが構造体と間違ったものを再定義していると言っています):
struct listitem* newItem = malloc(sizeof(struct listitem));
2番目の方法:
listitem* newItem = malloc(sizeof(listitem));
または、別の方法がありますか?
2番目の方法は、使用した場合にのみ機能します
typedef struct listitem listitem;
listitem
型の変数の宣言の前。構造を動的に割り当てるのではなく、単に静的に割り当てることもできます。
struct listitem newItem;
これまでに示した方法は、作成するint
ごとに以下を実行するようなものです。
int *myInt = malloc(sizeof(int));
ポインタが必要かどうかによって異なります。
次のように構造体を呼び出すことをお勧めします。
Typedef struct s_data
{
int a;
char *b;
etc..
} t_data;
ポインターなしの構造のためにインスタンス化した後:
t_data my_struct;
my_struct.a = 8;
ポインターが必要な場合は、次のようにmallocする必要があります。
t_data *my_struct;
my_struct = malloc(sizeof(t_data));
my_struct->a = 8
あなたの質問に対するこの答えを願っています
struct listitem newItem; // Automatic allocation
newItem.val = 5;
構造体の簡単な概要は次のとおりです。 http://www.cs.usfca.edu/~wolber/SoftwareDev/C/CStructs.htm