Exista posibilitatea de a defini noi tipuri de date si chiar de a le denumi.
Asignarea unei denumiri unui tip de data se realizeaza astfel:
typedef tip Denumire_Tip
Exemplu:
typedef int Integer typedef float Real ;
Integer i,j; Real X[10];
Definirea acestui tip se face astfel:
enum Denumire Lista_Var
Implicit Expr0=0, iar Expri=Expri-1+1, iar daca se declara o lista de variabile avand acest tip atunci denumirea tipului enumerare definit poate lipsi.
Exemplu:
#include <stdio.h>; // 2003
#include <conio.h>;
enum Zi_Lucratoare;
enum ZileSapt
enum ZileSapt Zi_Sapt; // sau ZileSapt Zi_Sapt;
void main (void)
int Zi,Luna,luna;
printf(' Zi, Luna : '); scanf(' d d',&Zi,&Luna);
for (luna=1; luna<Luna; luna++) Zi+=Zile[luna-1];
Zi_Sapt=Luni; Zi=(Zi+1) 7; while (Zi--) Zi_Sapt++; // sau Zi_Sapt=Zi_Sapt+
if (Zi_Sapt<Sambata) Zi_Lucratoare=True;
else Zi_Lucratoare=False;
if (Zi_Lucratoare) printf(' Este o zi lucratoare n');
else printf(' Este o zi libera n');
getch();
Definirea unei structuri (inregistrari) se face astfel:
struct Denumire Lista_Var
Daca se declara o lista de variabile avand acest tip atunci denumirea structurii poate lipsi.
Referirea componentelor unei structuri se face astfel:
Denumire Componenta
Exemplu:
#include <stdio.h>;
#include <conio.h>;
typedef float Real;
struct Punct
struct Cerc
Real Sqr(Real x)
void main (void)
; Cerc C;
printf(' n Cerc : '); scanf('%f %f %f',&C.Centru.x,&C.Centru.y,&C.Raza);
printf(' n C(x0,y0,r)= %5.2f %5.2f %5.2f',C.Centru.x,C.Centru.y,C.Raza);
if (Sqr(C.Centru.x-O.x)+Sqr(C.Centru.y-O.y)<=Sqr(C.Raza)) printf(' n C contine O');
else printf(' n C nu cont.O');
getch();
Referirea componentelor unei structuri definita printr-o variabila de tip referinta (pointer) se efectueaza
Var_Ref Componenta sau Var_Ref >Componenta
Exemplu:
struct Cerc
void TipCerc( Cerc C
void main (void)
; TipCerc(&C); }
Redefinirea unei zone de memorie se poate face in cadrul unei uniuni astfel:
union Denumire Lista_Var
Toate componentele aflate in Lista_Declaratii ocuma aceeasi zona de memorie (se suprapun), lungimea uniunii fiind data de maximul lungimilor declaratiilor .
Referirea componentelor unei uniuni se face astfel:
Denumire Componenta
sau pentru o variabila de tip referinta:
Var_Ref Componenta sau Var_Ref >Componenta
Exemplu:
union U x;
int Cifra(int c)
void Cifre(int b)
void Print(unsigned x)
void main (void)
while (x.Hexa!=0); getch();
Exista posibilitatea definirii unei structuri ale carei campuri sa fie formate dintr-o secventa de biti consecutivi (ai unui cuvant). Aceste campuri au tipul unsigned avand fiecare o lungime precizata (in numar de biti):
struct Denumire Lista_Var
unde campurile Campi sunt de forma:
unsigned Nume_Campi : Lungimei
Exemplu:
#include <stdio.h>;
struct Camp_Biti ;
union x ;
void Cifra(int c)
void main (void)
while (x.Intreg!=0);
|