如何在C中创建结构的新实例

时间:2015-09-15 04:37:38

标签: c struct instance

在C中,定义结构时。创建新实例的正确方法是什么?我有两种看法:

struct listitem {
    int val;
    char * def;
    struct listitem * next;
};

第一种方式(xCode说这是重新定义结构并且错误):

    struct listitem* newItem = malloc(sizeof(struct listitem));

第二种方式:

    listitem* newItem = malloc(sizeof(listitem));

或者,还有另一种方法吗?

3 个答案:

答案 0 :(得分:14)

这取决于你是否想要一个指针。

最好像这样调用你的结构:

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

我希望能回答你的问题

答案 1 :(得分:13)

第二种方式只有在你使用

时才有效
typedef struct listitem listitem;

在声明类型为listitem的变量之前

。您也可以静态分配结构而不是动态分配它:

struct listitem newItem;

您演示的方式就像为您要创建的每个int执行以下操作:

int *myInt = malloc(sizeof(int));

答案 2 :(得分:2)

struct listitem newItem; // Automatic allocation
newItem.val = 5;

这是结构的快速概述: http://www.cs.usfca.edu/~wolber/SoftwareDev/C/CStructs.htm