structure and union types 程式設計 潘仁義 ccu comm. structure type definition struct...
Post on 21-Dec-2015
243 views
TRANSCRIPT
Structure and Union TypesStructure and Union Types
程式設計潘仁義
CCU COMM
Structure Type DefinitionStructure Type Definitionstruct
structured data objects, can be defined by users
#define STRSIZ 10
typedef 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);…
Assigning Values to Components Assigning Values to Components of Variable current_planetof Variable current_planet
Function with a Structured Input ParameterFunction with a Structured Input Parameter
Function Comparing Two Structured Values Function Comparing Two Structured Values for Equalityfor Equality
Function with a Structured Output ArgumentFunction with a Structured Output Argument
也可寫成& plnp->diameter,&plnp->moons,& plnp->orbit_time,&plnp->rotation_time);
Data Areas of main and scan_planet during Data Areas of main and scan_planet during Execution of status = scan_planet (¤tExecution of status = scan_planet (¤t_planet);_planet);
Function get_planet Returning a Structured Function get_planet Returning a Structured Result TypeResult Type
Data Type planet_t and Basic OperationsData Type planet_t and Basic Operations
例如 : 課本的 complexFigure 11.10
Parallel Arrays and an Array of StructuresParallel Arrays and an Array of Structures
int id[50];double gpa[50];
struct {int id;double gpa;
} stulist[50];
Union typesUnion types
UnionTo 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 Function That Displays a Structure with a Union Type ComponentUnion Type Component
Q & AQ & A
union 可以用 -> 嗎 ?
struct planet_t a, b;a = b; /* 可這麼寫嗎 ? */if(a == b) {} /* 可這麼寫嗎 ? */
(*plnp).name*plnp.nameplnp->name&plnp->name
小心: union 的內容該如何解釋 ?