Изведени тип података

Програмски језик C ти омогућава да дефинишеш сопствене типове података. То можеш да урадиш помоћу кључне речи typedef тако што ћеш дефинисати друго име за већ постојећи тип или за сложени тип који је изведен из постојећих типова. Општи облик дефиниције новог типа података је:

typedef tip novo_ime;

Напиши програм у програмском језику C у којем је дефинисан тип података bodovi, где бодови могу бити неозначени кратки целобројни подаци, односно unsigned short int.

#include <stdio.h>

int main(void)
{
    typedef unsigned short int bodovi;
    return 0;
}

Допуни претходни програм и деклариши и иницијализуј променљиве, ако су познате вредности броја бодова \(100\) и \(85\) које су Тамара и Влада добили на тесту, а није познат број бодова Алисе и Боба. Након тога, обезбеди унос броја бодова за Алису и Боба и обезбеди испис свих података у једном реду стандардног излаза, где су подаци одвојени размаком.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    typedef unsigned short int bodovi;
    bodovi t = 100, v = 85, a, b;
    scanf("%hu%hu", &a, &b);
    printf("%hu %hu %hu %hu", t, v, a, b);
    return 0;
}

Ако корисник у програм унесе 90 и 75, на стандардном излазу исписаће се

100 85 90 75

Над типовима података дефинисаним кључном речју typedef не можеш користити модификаторе - модификатори се наводе приликом дефиниције типа.

Због тога ће у следећем програму…

#include <stdio.h>

int main(void)
{
    typedef int bodovi;
    unsigned short bodovi t = 100, v = 85, a, b;
    return 0;
}

…компајлер јавити грешку.

Иако си дефинисао друго име за већ постојеће тип, тај постојећи тип можеш и даље користити у програму.

У следећем програму…

#include <stdio.h>

int main(void)
{
    typedef unsigned short int bodovi;
    bodovi t = 100, v = 85;
    unsigned short int a, b;
    return 0;
}

…променљиве t, v, a и b заправо су истог типа. Кључном речи typedef не креирају се нови типови - креирају се синоними за већ постојеће типове.

Кључном речју const можеш дефинисати константне податке изведеног типа.

Напиши програм у програмском језику C у којем су дефинисани константни подаци изведеног типа минимум бодова \(0\), максимум \(100\) и број бодова за позитивну оцену \(51\).

#include <stdio.h>

int main(void)
{
    typedef unsigned short int bodovi;
    const bodovi min = 0, max = 100, poz = 51;
    return 0;
}

У пракси се typedef највише користи да би се поједноставила декларација комплексних структура података које се састоје од струкрура или унија - о њима ћеш учити следеће школске године.