140 likes | 166 Views
Structure and Union Types. 程式設計 潘仁義 CCU COMM. Structure Type Definition. struct structured data objects, can be defined by users
E N D
Structure and Union Types 程式設計 潘仁義 CCU COMM
Structure Type Definition • struct • structured data objects, can be defined by users • #define STRSIZ 10typedef struct { char name[STRSIZ]; double diameter; /* diameter in km */ int moons; /* number of moons */ double orbit_time, /* years to orbit sun once */ rotation_time; /* hours to rotate once */} planet_t; • int main (){ planet_t current_planet, blank_planet = {“”, 0,0,0,0}; int status = scan_planet(¤t_planet); /* 等會看 */ current_planet = get_planet(); print_planet(current_planet); …
Function with a Structured Output Argument 也可寫成 & plnp->diameter, &plnp->moons, & plnp->orbit_time, &plnp->rotation_time);
Data Areas of main and scan_planet during Execution of status = scan_planet (¤t_planet);
Data Type planet_t and Basic Operations 例如: 課本的 complex Figure 11.10
Parallel Arrays and an Array of Structures • int id[50];double gpa[50]; • struct { int id; double gpa;} stulist[50];
Union types • Union • To deal with situations in which one needs a data object that can be interpreted in a variety of ways. • typedef union { int wears_wig; /*載假髮嗎?*/ char color[20];} hair_t; • typedef struct { int bald; /*禿頭嗎?*/ hair_t h;} hair_info_t;
Function That Displays a Structure with a Union Type Component
Q & A • union 可以用 -> 嗎? • struct planet_t a, b;a = b; /* 可這麼寫嗎? */if(a == b) {} /* 可這麼寫嗎? */ • (*plnp).name*plnp.nameplnp->name&plnp->name • 小心:union 的內容該如何解釋?