Intereting Posts
индекс массива имеет тип ‘char’ Как вызвать указатель на функцию, определенную в typedef struct Компиляция нескольких файлов C в программе Какова цель «;» в конце цикла for? C & Lua: возвращаемое значение luaL_dostring Точки последовательности при вызове функций в C и неопределенное / неуказанное поведение Как я могу прочитать переменное количество целочисленного ввода в C? Зачем прикладывать «extern puts» к указателю функции »(void (*) (char *)) & puts”? Оптимизация дискового ввода-вывода Есть ли лучший способ сравнить программу C, чем время? Получение имени вызывающей функции в C (без использования препроцессора) Перенаправить stdout в файл без предупреждений ANSI в каких случаях мне нужно блокировать переменную от одновременного доступа? Почему здесь не происходит неявное преобразование из константы в const? Как читать строку из файла и использовать ее в массиве?

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