structure and union types 程式設計 潘仁義 ccu comm. structure type definition struct...

Post on 21-Dec-2015

243 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

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(&current_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 (&currentExecution of status = scan_planet (&current_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 的內容該如何解釋 ?

top related