我有一个像这样定义的结构:
typedef struct my_struct
{
int numbers[10];
}
*my_struct;
有没有办法找出它的大小?
sizeof(my_struct);// return size of a pointer
答案 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定义是分开的,而指针是显式的。