typedef 指针的大小

sizeof typedef pointer

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

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

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

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

结构类型本身拼写为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];
};

一切都有唯一的名称,typedef 与结构定义是分开的,指针是显式的。