* Предефиниране на типове
Публикувано на 25 октомври 2008 от Филип Петров. Записано в C/C++.
Друга удобна конструкция в езика С е създаването на собствени имена на типовете на променливите. Това се извършва чрез описанието typedef:
typedef <стар тип> <нов тип>;
Името определено с typedef може да се използва за описание на променливи (то е еквивалентно на съществуващ тип). Например:
typedef int NEWNAME; NEWNAME i,j;
Този пример практически създава све променливи от тип int. Естествено използването на сложни типове данни не е проблем:
typedef float FARR[100]; typedef char *WORD; typedef char *FUNC(); FARR a; // Еквивалентно на float a[100] WORD p, q; // Еквивалентно на char *p,*q; FUNC name; // Декларира функция, която връща указател от тип char
Възможно е дори създаването на структури:
typedef struct test{
int hour;
int min;
float sec;
} TIME;
TIME x; // Еквивалентно на struct test x;
Съществено е да се отбележи, че typedef използва съществуващи в езика типове, а не дефинира нови типове данни.
Предимствата на typedef са следните:
- Увеличава се прегледността на програмата
- По-компактни записи
- По-добра преносимост на програмите
Като пример за последното изброено предимство е например пренасянето на код от 32 на 64 битов компилатор. Можем лесно да коригираме различните големини на данните само с една промяна (int64 -> int32) ако предварително сме ги предефинирали.
2 коментара за “Предефиниране на типове”
Пусни коментар
Страници
Категории
- C/C++ (45)
- DB (36)
- Dogs (49)
- Food (7)
- History (8)
- Java (33)
- Lada (41)
- Math (104)
- Metodos (23)
- NetSec (36)
- Other (76)
- Politics (32)
- Probability (13)
- VC++.Net (1)
- XHTML/JS (25)
Нови
- Един виц за капитализма
- Как да получиш целувка?
- Лека разходка на Витоша
- Роко и Берра на училище
- Газова бутилка под багажника на Лада Нива
22 ноември 2009 на 23:37
Браво за хубавото обяснение. В пъти по-добро и по-просто от доста български учебници по темата ;)
23 ноември 2009 на 15:08
Написал съм го кратко и простичко така, че да е максимално разбираемо. Не смятам, че е по-добре от който и да е учебник :) Благодаря за коментара :)