ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Διαφάνειες παρουσίασης #5 4 Ορισμοί τύπων 4 Απαριθμήσεις 4 Δομές 4 Ενώσεις
2Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Ορισμοί τύπων u Συνώνυμα απλών τύπων typedef double real; real x, y; u Συνώνυμα σύνθετων τύπων typedef double vector [10]; vector v; for (i = 0; i < 10; i++) v[i] = i; typedef int * pointer; pointer p = &i;
3Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Απαριθμήσεις (enumerations) u Ο τύπος enum enum color_tag { GREEN, RED, BLUE, WHITE, BLACK }; enum color_tag c; c = GREEN; typedef enum { GREEN, RED, BLUE, WHITE, BLACK } color; color c = WHITE;
4Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Δομές (structures)(i) u Ο τύπος struct struct complex_tag { double re, im; }; struct complex_tag z; z.re = 1.0; z.im = -1.0; typedef struct complex_tag complex; complex z; complex zs [100];
5Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Δομές (structures)(ii) u Παράδειγμα complex complement (complex z) { complex result; result.re = z.re; result.im = -z.im return result; }
6Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Δομές (structures)(iii) u Παράδειγμα typedef struct { char firstName [30]; char lastName [50]; char phone [10]; int age; double salary; } record; record r [1000]; r[423].age = 32;
7Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Δομές (structures)(iv) u Παράδειγμα record * p; p = &(r[873]); (*p).salary = ; p->salary = ; for (i=0, p=r; i<1000; i++, p++) p->salary = ;
8Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Ενώσεις (unions) u Ο τύπος union union number_tag { int i; double d; }; union number_tag n; n.d = 1.2; printf("%lf\n", n.d); n.i = 42; printf("%d\n", n.i); printf("%lf\n", n.d); /* wrong! */