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

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

Dec 21, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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 的內容該如何解釋 ?