Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/104: Рейтинг темы: голосов - 104, средняя оценка - 4.55
 Аватар для Lilim
7 / 7 / 0
Регистрация: 24.12.2011
Сообщений: 55

Для чего typedef struct

28.07.2013, 18:06. Показов 22071. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Часто в "профессиональном" коде вижу -
C++
1
2
3
typedef struct MyStruct {
// ...
} MyStuct;
даёт ли это какие то преимущества перед простым объявлением -
C++
1
2
3
struct MyStruct {
// ...
};
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.07.2013, 18:06
Ответы с готовыми решениями:

Для чего используют typedef?
Здравствуйте программисты! Набрёл на тему,там используется какой-то typedef, подскажите пожалуйста,что это такое,как с ним работать. И...

typedef struct ....
Здравствуейте. Обьясните пожалуйсто новичку что означает этот код. typedef struct { long num_servers; long data_size; char*...

Typedef struct
Здравствуйте форумчане. С недавних пор пытаюсь научиться работать с микроконтроллерами. Параллельно изучаю С\С++. Так вот у меня...

6
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.07.2013, 18:16
Лучший ответ Сообщение было отмечено как решение

Решение

Принципиальных преимуществ кроме того, чтобы писать меньше букв, не даёт. Во втором случае в языке Си у тебя НЕ вводится новый идентификатор в область видимости, хотя сложно это назвать преимуществом. Первый вариант, в основном, нужен в тех случаях, когда внутри структуры описывается поле, которое есть указатель на эту же самую структуру (например, указатель next при реализации списка). По другому его создать не получится

Указатель на структуру - что напечатает программа
странное употребления к-го слова typedef
5
 Аватар для Fintt
10 / 10 / 2
Регистрация: 13.02.2012
Сообщений: 94
28.07.2013, 18:23
Например
C++
1
2
struct MyStruct {};
typedef MyStruct *My;
Если работаешь со списком так удобнее и вообще рекомендуется объявлять пользовательский тип как указатель на MyStruct. Если не ошибаюсь.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.07.2013, 18:29
Fintt, я вообще-то говорил о том, чтобы объявить указатель ВНУТРИ описания тела структуры, а не снаружи, как у тебя
0
 Аватар для Fintt
10 / 10 / 2
Регистрация: 13.02.2012
Сообщений: 94
28.07.2013, 18:31
Я теперь понял что это всё с С, я сообщение раньше начал писать просто вот и не увидел сразу.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.07.2013, 18:41
По поводу заведения typedef'а для указателя на структуру. На мой взгляд это тоже не очень удобно. Потому что в этом случае невозможно будет задавать указатель на const. Т.е. вот так можно

C
typedef struct {
  ...
} struct_t;
 
struct_t *ptr1;
const struct_t *ptr2;
а вот так нельзя (в смысле можно, но получим совсем не то, что хотели):

C
typedef struct {
  ...
} struct_t;
 
typedef struct_t * struct_ptr_t;
 
struct_ptr_t ptr1;
const struct_ptr_t ptr2;
а чтобы получить то, что хотели, то надо писать:

C
typedef struct {
  ...
} struct_t;
 
typedef struct_t * struct_ptr_t;
typedef const struct_t * struct_const_ptr_t;
 
struct_ptr_t ptr1;
struct_const_ptr_t ptr2;
Лично моё мнение - заведение отдельного typedef'а на указатель скорее приводит к бардаку и снижению читабельности кода, чем к порядку
0
4 / 4 / 0
Регистрация: 01.03.2017
Сообщений: 12
08.08.2017, 12:07
Вставлю свои 5 копеек.
Тоже недавно столкнулся с данным вопросом. После гугления нагуглилась данная тема.
А ещё одна на геймдеве [cut] и там так же сказано, что...
typedef struct так же используется для определения альясов
C++
1
2
3
4
typedef struct _base_chunk
{
  udword base, size;
}MY_MEGA_MODEL_CHUNK, HDD_TREE_CHUNK и т.п.
Используется для логической разметки структуры кода. Типа, если надо определить несколько структур одинаковой структуры, но логически разного назначения. Иначе, пришлось бы либо объявлять все переменные для одной структуры, либо юзать наследование для каждой структуры, либо объявлять все структуры копипастя код первой что приведёт к дублированию строк.

Добавлено через 3 минуты
Кстати, подобный подход используется в заголовочных файлах DirectX SDK. Собстна изучение этих файлов и послужило толчком к гугление сабжа.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.08.2017, 12:07
Помогаю со студенческими работами здесь

typedef struct
Ребята, нужна помощь. Первый раз использую typedef struct. Вроде бы всё работает, но хочу удостовериться по причине: это мой уже 2-ой...

typedef struct
а зачем вы используете конструкцию typedef struct name{...} ? и какие она дает преимущества в отличии от struct name{...}

typedef struct + TXT
Такое вот задание.. есть TXT файл, пропарсить смогу сам, а дальше не знаю что делать, допустим, считали данные : Строка :...

Волшебные вещи с typedef struct
у меня сейчас мозг взорвется не пойму в чем ошибка,где я не так делаю? #include <stdio.h> #include <locale.h> #include...

Программа через структуру typedef struct
Люди помогите если несложно с программой, задание таково: 1.С клавиатуры вводятся пункты структуры - Студент: Матрикул - номер...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru