Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 421, средняя оценка - 4.66
prikolist
3 / 3 / 0
Регистрация: 19.07.2008
Сообщений: 142
#1

Для чего используют typedef? - C++

15.04.2009, 17:56. Просмотров 55785. Ответов 31
Метки нет (Все метки)

Здравствуйте программисты! Набрёл на тему,там используется какой-то typedef, подскажите пожалуйста,что это такое,как с ним работать. И ещё,что такое структуры, не очень что отложилось у меня, где их использовать,как их создавать.
Вроде слышал,что ты создаёшь ею новый тип.
Заранне благодарен за ответ.
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2009, 17:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Для чего используют typedef? (C++):

Для чего используют -1 в программировании - C++
Здравствуйте форумчане, при просмотре примера из книги наткнулся на кусок кода: if (j != -1) { ... } Что означает -1?

Для чего typedef struct - C++
Часто в "профессиональном" коде вижу - typedef struct MyStruct { // ... } MyStuct; даёт ли это какие то преимущества перед...

Для чего используют класс "Стек"? - C++
Подскажите для чего используют класс стек и зачем он вопще нужен?

typedef непонятно чего - C++
Есть вот такой код typedef private void (T::*TimedFunction)(void); По сути это должна быть ссылка на функцию класса Т с возвращаемым...

Для чего нужно писать в int main() в скобках всякие args потом объявлять переменные, и прочее. Для чего если можно в сборках это все обьявлять. - C++
Для чего нужно писать в int main() в скобках всякие args потом объявлять переменные, и прочее. Для чего если можно в сборках это все...

Typedef для функций - C++
Здравствуйте! В книге Страуструпа в качестве примера приводится typedef для указателей на функции например: typedef void(*SIG_TYP)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.04.2012, 19:40 #16
Цитата Сообщение от unreal Посмотреть сообщение
а вы не знаете что означает этот код ??
описание структуры, а что неясно?
0
unreal
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 118
18.04.2012, 19:44 #17
Цитата Сообщение от Jupiter Посмотреть сообщение
описание структуры, а что неясно?
ну вот не ясно почему после имени структуры пишется ети *last; *next; **adj; *sp; *gp
и что они вообще означают особенно **adj;
** это какая то операция ?
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.04.2012, 19:49 #18
unreal, читайте про указатели
1
unreal
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 118
18.04.2012, 19:50 #19
Цитата Сообщение от Jupiter Посмотреть сообщение
unreal, читайте про указатели
я читал но там тока один * ))
0
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
18.04.2012, 19:51 #20
unreal, ** - указатель на указатель
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.04.2012, 19:52 #21
Цитата Сообщение от unreal Посмотреть сообщение
я читал но там тока один * ))
** - указатель на указатель
*** - указатель на указатель на указатель
и т.д.
1
unreal
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 118
18.04.2012, 19:53 #22
Цитата Сообщение от OstapBender Посмотреть сообщение
unreal, ** - указатель на указатель
ооо а так бывает ?

Добавлено через 1 минуту
Цитата Сообщение от Jupiter Посмотреть сообщение
** - указатель на указатель
*** - указатель на указатель на указатель
и т.д.
а зачем они перед именем структуры ?
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.04.2012, 19:54 #23
Цитата Сообщение от unreal Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
typedef struct VERTEX {
 struct VERTEX   *last;
 struct VERTEX   *next;
 struct VERTEX   **adj;
 struct SKELETON  *sp;
 struct MAPGLUE   *gp;
 char status,pad;
 unsigned short id,n;
 float  p[3];
 long  xyz[3];
} vertex;
здесь декларирован тип структуры VERTEX и сама структура этого типа vertex с полями: last типа указатель на VERTEX, next типа указатель на VERTEX, **adj типа указатель на указатель на VERTEX, *sp типа указатель на SKELTON, *gp типа указатель на MAPGLUE, status типа char, pad типа char, id типа unsigned short int, n unsigned short int, p типа массив из трёх элементов типа float и*xyz типа массив из трёх элементов типа long int. Хотя написано не "unsigned short int", а "unsigned short", но после "short" неявно подразумевается int. После "long" также неявно подразумевается "int", если не указан другой тип (не написано, например. "long double"), в данном случае другой тип не написан. В декларации всего типа избыточно "typedef", а в декларациях полей - "struct". то есть можно написать так:
C++
1
2
3
4
5
6
7
8
9
10
11
 struct VERTEX {
 VERTEX   *last;
 VERTEX   *next;
 VERTEX   **adj;
 SKELETON  *sp;
 MAPGLUE   *gp;
 char status,pad;
 unsigned short id,n;
 float  p[3];
 long  xyz[3];
} vertex;
. А ещё можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
 struct VERTEX {
 VERTEX    *last;
 VERTEX   *next;
 VERTEX     **adj;
 SKELETON  *sp;
 MAPGLUE   *gp;
 char status,pad;
 unsigned short id,n;
 float p[3];
 long  xyz[3];
};
VERTEX vertex;
, то есть можно разделить декларации структуры и её типа на две разные декларации.

Добавлено через 34 секунды
Цитата Сообщение от unreal Посмотреть сообщение
ооо а так бывает ?

Добавлено через 1 минуту


а зачем они перед именем структуры ?
Это глюк форума.
1
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
18.04.2012, 19:54 #24
taras atavin, вы ошиблись, здесь объявлен тип struct VERTEX, и его синоним vertex. переменных не объявлено.
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.04.2012, 19:58 #25
Тип очень похож на какую векторную 3D геометрию на координатах точек, соединённых направленными отрезками.

Добавлено через 1 минуту
Цитата Сообщение от OstapBender Посмотреть сообщение
taras atavin, вы ошиблись, здесь объявлен тип struct VERTEX, и его синоним vertex. переменных не объявлено.
После закрывающей скобки синоним не объявляется, это способ слепить в одну декларацию декларации типа и переменной.
0
unreal
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 118
18.04.2012, 20:00 #26
Цитата Сообщение от taras atavin Посмотреть сообщение
здесь декларирован тип структуры VERTEX и сама структура этого типа vertex с полями: last типа указатель на VERTEX, next типа указатель на VERTEX, **adj типа указатель на указатель на VERTEX, *sp типа указатель на SKELTON, *gp типа указатель на MAPGLUE, status типа char, pad типа char, id типа unsigned short int, n unsigned short int, p типа массив из трёх элементов типа float и*xyz типа массив из трёх элементов типа long int. Хотя написано не "unsigned short int", а "unsigned short", но после "short" неявно подразумевается int. После "long" также неявно подразумевается "int", если не указан другой тип (не написано, например. "long double"), в данном случае другой тип не написан. В декларации всего типа избыточно "typedef", а в декларациях полей - "struct". то есть можно написать так:
C++
1
2
3
4
5
6
7
8
9
10
11
 struct VERTEX {
 VERTEX   *last;
 VERTEX   *next;
 VERTEX   **adj;
 SKELETON  *sp;
 MAPGLUE   *gp;
 char status,pad;
 unsigned short id,n;
 float  p[3];
 long  xyz[3];
} vertex;
. А ещё можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
 struct VERTEX {
 VERTEX    *last;
 VERTEX   *next;
 VERTEX     **adj;
 SKELETON  *sp;
 MAPGLUE   *gp;
 char status,pad;
 unsigned short id,n;
 float p[3];
 long  xyz[3];
};
VERTEX vertex;
, то есть можно разделить декларации структуры и её типа на две разные декларации.

Добавлено через 34 секунды


Это глюк форума.
нет я сам это из кода скопировал и там так написано (перед именами структур)
я думал структуры мож быт так ... struct name {.....} а тут что та другое
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.04.2012, 20:00 #27
stuct struct_name{
typpe member1;
typpe member2
.
.
.
typpe memberN;
} object-list;
С какого object стал переводится, как синоним?
0
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
18.04.2012, 20:03 #28
taras atavin, вы вероятно не заметили слова typedef ?
http://codepad.org/sOHV8O2Q

кстати слово struct также не является излишним, если речь идет о ристом С, но т.к тема в разделе С++, то в прочем да - излишне. но кому как удобнее. кстати иногда оно бывает необходимо. допустим когда имя функции и структуры - совпадают.

C++
1
2
3
4
5
6
struct f {
...
};
 
void f(f obj) ; // не скомпилируется
void f(struct f obj); // ok
0
unreal
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 118
18.04.2012, 20:03 #29
Цитата Сообщение от taras atavin Посмотреть сообщение
С какого object стал переводится, как синоним?
object-list зачем он нужен ?
0
taras atavin
18.04.2012, 20:09     Для чего используют typedef?
  #30

Не по теме:

Цитата Сообщение от OstapBender Посмотреть сообщение
но кому как удобнее
Я призывал опускать?
Цитата Сообщение от OstapBender Посмотреть сообщение
кстати иногда оно бывает необходимо. допустим когда имя функции и структуры - совпадают.
Теперь буду знать, что это вообще возможно.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2012, 20:09
Привет! Вот еще темы с ответами:

Typedef для переменной - C++
Добрый день. Есть примерно такая переменная:myScruct.someVal.val.objectЯ все это длинное и неудобное безобразие хочу обозначить...

Как правильно пользоваться typedef для декларации типа указателя на функцию? - C++
Мне нужны будут функции, принимающие параметр-указатель на функции с одним и тем же списком параметров и возвращаемым типом. Как правильно...

Как используют макросы? - C++
Здраствуйте, в моем блоге форумчанин с ником Evg посоветовал использовать макрос для вот такой конструкции: i f ( k e y s & ( 0 x 1...

typedef в c++ - C++
Здравствуйте! Нужно собрать полную информацию по оператору typedef в c++. Пока нашел, что typedef используется для задания новых...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.04.2012, 20:09
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru