У меня есть структура, которая определяется следующим образом:
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 отделен от определения структуры, а указатели являются явными.