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

13
Structure and Union Types Structure and Union Types 程程程程 程程程 CCU COMM

Post on 21-Dec-2015

243 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Structure and Union Types 程式設計 潘仁義 CCU COMM. Structure Type Definition struct structured data objects, can be defined by users #define STRSIZ 10 typedef

Structure and Union TypesStructure and Union Types

程式設計潘仁義

CCU COMM

Page 2: Structure and Union Types 程式設計 潘仁義 CCU COMM. Structure Type Definition struct structured data objects, can be defined by users #define STRSIZ 10 typedef

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);…

Page 3: Structure and Union Types 程式設計 潘仁義 CCU COMM. Structure Type Definition struct structured data objects, can be defined by users #define STRSIZ 10 typedef

Assigning Values to Components Assigning Values to Components of Variable current_planetof Variable current_planet

Page 4: Structure and Union Types 程式設計 潘仁義 CCU COMM. Structure Type Definition struct structured data objects, can be defined by users #define STRSIZ 10 typedef

Function with a Structured Input ParameterFunction with a Structured Input Parameter

Page 5: Structure and Union Types 程式設計 潘仁義 CCU COMM. Structure Type Definition struct structured data objects, can be defined by users #define STRSIZ 10 typedef

Function Comparing Two Structured Values Function Comparing Two Structured Values for Equalityfor Equality

Page 6: Structure and Union Types 程式設計 潘仁義 CCU COMM. Structure Type Definition struct structured data objects, can be defined by users #define STRSIZ 10 typedef

Function with a Structured Output ArgumentFunction with a Structured Output Argument

也可寫成& plnp->diameter,&plnp->moons,& plnp->orbit_time,&plnp->rotation_time);

Page 7: Structure and Union Types 程式設計 潘仁義 CCU COMM. Structure Type Definition struct structured data objects, can be defined by users #define STRSIZ 10 typedef

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);

Page 8: Structure and Union Types 程式設計 潘仁義 CCU COMM. Structure Type Definition struct structured data objects, can be defined by users #define STRSIZ 10 typedef

Function get_planet Returning a Structured Function get_planet Returning a Structured Result TypeResult Type

Page 9: Structure and Union Types 程式設計 潘仁義 CCU COMM. Structure Type Definition struct structured data objects, can be defined by users #define STRSIZ 10 typedef

Data Type planet_t and Basic OperationsData Type planet_t and Basic Operations

例如 : 課本的 complexFigure 11.10

Page 10: Structure and Union Types 程式設計 潘仁義 CCU COMM. Structure Type Definition struct structured data objects, can be defined by users #define STRSIZ 10 typedef

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];

Page 11: Structure and Union Types 程式設計 潘仁義 CCU COMM. Structure Type Definition struct structured data objects, can be defined by users #define STRSIZ 10 typedef

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;

Page 12: Structure and Union Types 程式設計 潘仁義 CCU COMM. Structure Type Definition struct structured data objects, can be defined by users #define STRSIZ 10 typedef

Function That Displays a Structure with a Function That Displays a Structure with a Union Type ComponentUnion Type Component

Page 13: Structure and Union Types 程式設計 潘仁義 CCU COMM. Structure Type Definition struct structured data objects, can be defined by users #define STRSIZ 10 typedef

Q & AQ & A

union 可以用 -> 嗎 ?

struct planet_t a, b;a = b; /* 可這麼寫嗎 ? */if(a == b) {} /* 可這麼寫嗎 ? */

(*plnp).name*plnp.nameplnp->name&plnp->name

小心: union 的內容該如何解釋 ?