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

Другие вопросы по тегам