Typedef结构

时间:2010-10-07 14:58:06

标签: c struct typedef

我正在以这种方式在我的项目中使用结构:

typedef struct
{
    int str1_val1;
    int str1_val2;
} struct1;

typedef struct
{
    int str2_val1;
    int str2_val2;
    struct1* str2_val3;
} struct2;

我是否有可能以某种方式破解这个定义,我只使用我的代码类型,比如

struct2* a;
a = (struct2*) malloc(sizeof(struct2));

不使用关键字struct

4 个答案:

答案 0 :(得分:2)

是,如下:

struct _struct1
{
...
};
typedef struct _struct1 struct1;

struct _struct2
{
...
};
typedef struct _struct2 struct2;

...

struct2 *a;
a = (struct2*)malloc(sizeof(struct2));

答案 1 :(得分:0)

是的,您可以使用typedef'ed符号而无需struct关键字。编译器只是将该名称用作您之前定义的结构的别名。

关于您的示例的一个注释,malloc返回指向内存的指针。因此,您的陈述应为

a = (struct2 *)malloc(sizeof(struct2));

答案 2 :(得分:0)

只是为了分享,我已经看过这种方法,虽然我个人不喜欢它(我喜欢所有名字和标记= P,我不喜欢在malloc中使用变量名),有人可能。

typedef struct {
    ...
} *some_t;

int main() {
    some_t var = (some_t) malloc(sizeof(*var));
}

答案 3 :(得分:0)

作为脚注。如果您使用C ++编写代码,那么您不需要执行typedef;结构是一种自动的类型。