sizeof typedef指针

时间:2017-04-09 08:57:35

标签: c pointers struct typedef sizeof

我有一个像这样定义的结构:

typedef struct my_struct
{
    int numbers[10];
}
*my_struct;

有没有办法找出它的大小?

sizeof(my_struct);// return size of a pointer

1 个答案:

答案 0 :(得分:3)

结构类型本身拼写为struct,因此您可以说:

sizeof (struct my_struct)

如果你还没有给你的结构命名,那么这是行不通的:

typedef struct { int numbers[10]; } * foo;  /* struct type has no name */
foo p = malloc(1000);
p->numbers[3] = 81;

我会说所有这些都是糟糕的代码,无缘无故地简洁。我会保持所有名称的唯一性,并命名一切,而不是别名指针,就此而言。例如:

typedef struct my_struct_s my_struct;

my_struct * create_my_struct(void);
void destroy_my_struct(my_struct * p);

struct my_struct_s
{
    int numbers[10];
};

Everything都有一个唯一的名称,typedef与struct定义是分开的,而指针是显式的。