Указатель sizeof typedef
У меня есть структура, которая определяется следующим образом:
typedef struct my_struct
{
int numbers[10];
}
*my_struct;
Есть ли способ узнать его размер?
sizeof(my_struct);// return size of a pointer
1 ответ
Решение
Сам тип структуры пишется с 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 отделен от определения структуры, а указатели являются явными.