SlideShare a Scribd company logo
Outline
Introduction
Structure Definitions
Initializing Structures
Accessing Members of Structures
Using Structures with Functions
Typedef
Example: High-Performance Card Shuffling and
Dealing Simulation
Unions
 Structures
◦ Collections of related variables (aggregates) under one
name
 Can contain variables of different data types
◦ Commonly used to define records to be stored in files
◦ Combined with pointers, can create linked lists, stacks,
queues, and trees
 Example
struct card {
char *face;
char *suit;
};
◦ struct introduces the definition for structure card
◦ card is the structure name and is used to declare
variables of the structure type
◦ card contains two members of type char * -
face and suit
 Struct information
◦ A struct cannot contain an instance of itself
◦ Can contain a member that is a pointer to the same
structure type
◦ Structure definition does not reserve space in memory
◦ Creates a new data type that used to declare structure
variables.
 Declarations
◦ Declared like other variables:
card oneCard, deck[ 52 ], *cPtr;
◦ Can use a comma separated list:
struct card {
char *face;
char *suit;
} oneCard, deck[ 52 ], *cPtr;
 Valid Operations
◦ Assigning a structure to a structure of the same type
◦ Taking the address (&) of a structure
◦ Accessing the members of a structure
◦ Using the sizeof operator to determine the size of a
structure
 Initializer lists
◦ Example:
card oneCard = { "Three", "Hearts" };
 Assignment statements
◦ Example:
card threeHearts = oneCard;
◦ Or:
card threeHearts;
threeHearts.face = “Three”;
threeHearts.suit = “Hearts”;
 Accessing structure members
◦ Dot operator (.) - use with structure variable name
card myCard;
printf( "%s", myCard.suit );
◦ Arrow operator (->) - use with pointers to structure
variables
card *myCardPtr = &myCard;
printf( "%s", myCardPtr->suit );
myCardPtr->suit equivalent to
( *myCardPtr ).suit
 Passing structures to functions
◦ Pass entire structure
 Or, pass individual members
◦ Both pass call by value
 To pass structures call-by-reference
◦ Pass its address
◦ Pass reference to it
 To pass arrays call-by-value
◦ Create a structure with the array as a member
◦ Pass the structure
 typedef
◦ Creates synonyms (aliases) for previously defined
data types
◦ Use typedef to create shorter type names.
◦ Example:
typedef Card *CardPtr;
◦ Defines a new type name CardPtr as a synonym for type
Card *
◦ typedef does not create a new data type
 Only creates an alias
 Pseudocode:
◦ Create an array of card structures
◦ Put cards in the deck
◦ Shuffle the deck
◦ Deal the cards
1. Load headers
1.1 Define struct
1.2 Function
prototypes
1.3 Initialize deck[]
and face[]
1.4 Initialize suit[]
1 /* Fig. 10.3: fig10_03.c
2 The card shuffling and dealing program using structures */
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <time.h>
6
7 struct card {
8 const char *face;
9 const char *suit;
10 };
11
12 typedef struct card Card;
13
14 void fillDeck( Card * const, const char *[],
15 const char *[] );
16 void shuffle( Card * const );
17 void deal( const Card * const );
18
19 int main()
20 {
21 Card deck[ 52 ];
22 const char *face[] = { "Ace", "Deuce", "Three",
23 "Four", "Five",
24 "Six", "Seven", "Eight",
25 "Nine", "Ten",
26 "Jack", "Queen", "King"};
27 const char *suit[] = { "Hearts", "Diamonds",
28 "Clubs", "Spades"};
29
30 srand( time( NULL ) );
2. Randomize
2. fillDeck
2.1 shuffle
2.2 deal
3. Function definitions
31
32 fillDeck( deck, face, suit );
33 shuffle( deck );
34 deal( deck );
35 return 0;
36 }
37
38 void fillDeck( Card * const wDeck, const char * wFace[],
39 const char * wSuit[] )
40 {
41 int i;
42
43 for ( i = 0; i <= 51; i++ ) {
44 wDeck[ i ].face = wFace[ i % 13 ];
45 wDeck[ i ].suit = wSuit[ i / 13 ];
46 }
47 }
48
49 void shuffle( Card * const wDeck )
50 {
51 int i, j;
52 Card temp;
53
54 for ( i = 0; i <= 51; i++ ) {
55 j = rand() % 52;
56 temp = wDeck[ i ];
57 wDeck[ i ] = wDeck[ j ];
58 wDeck[ j ] = temp;
59 }
60 }
Put all 52 cards in the deck.
face and suit determined by
remainder (modulus).
Select random number between 0 and 51.
Swap element i with that element.
3. Function definitions
61
62 void deal( const Card * const wDeck )
63 {
64 int i;
65
66 for ( i = 0; i <= 51; i++ )
67 printf( "%5s of %-8s%c", wDeck[ i ].face,
68 wDeck[ i ].suit,
69 ( i + 1 ) % 2 ? 't' : 'n' );
70 }
Cycle through array and print
out data.
Program Output
Eight of Diamonds Ace of Hearts
Eight of Clubs Five of Spades
Seven of Hearts Deuce of Diamonds
Ace of Clubs Ten of Diamonds
Deuce of Spades Six of Diamonds
Seven of Spades Deuce of Clubs
Jack of Clubs Ten of Spades
King of Hearts Jack of Diamonds
Three of Hearts Three of Diamonds
Three of Clubs Nine of Clubs
Ten of Hearts Deuce of Hearts
Ten of Clubs Seven of Diamonds
Six of Clubs Queen of Spades
Six of Hearts Three of Spades
Nine of Diamonds Ace of Diamonds
Jack of Spades Five of Clubs
King of Diamonds Seven of Clubs
Nine of Spades Four of Hearts
Six of Spades Eight of Spades
Queen of Diamonds Five of Diamonds
Ace of Spades Nine of Hearts
King of Clubs Five of Hearts
King of Spades Four of Diamonds
Queen of Hearts Eight of Hearts
Four of Spades Jack of Hearts
Four of Clubs Queen of Clubs
 union
◦ Memory that contains a variety of objects over time
◦ Only contains one data member at a time
◦ Members of a union share space
◦ Conserves storage
◦ Only the last data member defined can be accessed
 union declarations
◦ Same as struct
union Number {
int x;
float y;
};
Union myObject;
 Valid union operations
◦ Assignment to union of same type: =
◦ Taking address: &
◦ Accessing union members: .
◦ Accessing members using pointers: ->
1. Define union
1.1 Initialize variables
2. Set variables
3. Print
1 /* Fig. 10.5: fig10_05.c
2 An example of a union */
3 #include <stdio.h>
4
5 union number {
6 int x;
7 double y;
8 };
9
10 int main()
11 {
12 union number value;
13
14 value.x = 100;
15 printf( "%sn%sn%s%dn%s%fnn",
16 "Put a value in the integer member",
17 "and print both members.",
18 "int: ", value.x,
19 "double:n", value.y );
20
21 value.y = 100.0;
22 printf( "%sn%sn%s%dn%s%fn",
23 "Put a value in the floating member",
24 "and print both members.",
25 "int: ", value.x,
26 "double:n", value.y );
27 return 0;
28 }
Program Output
Put a value in the integer member
and print both members.
int: 100
double:
-92559592117433136000000000000000000000000000000000000000000000.00000
Put a value in the floating member
and print both members.
int: 0
double:
100.000000
Program Output
1 January
2 February
3 March
4 April
5 May
6 June
7 July
8 August
9 September
10 October
11 November
12 December

More Related Content

PPTX
Cs1123 12 structures
PDF
PPSX
C++ programming structure & union
PPTX
Structure & union
PPT
React.js 20150828
PPTX
Structures and Unions
PPT
Structure in c
PPTX
6. using control structures, conditional statements and loops
Cs1123 12 structures
C++ programming structure & union
Structure & union
React.js 20150828
Structures and Unions
Structure in c
6. using control structures, conditional statements and loops

What's hot (7)

PPTX
Inheritance
PPT
PDF
PPTX
Arrays, Structures And Enums
PPTX
Introduction towebmatrix
PDF
Lecture 04
PPT
Pointers
Inheritance
Arrays, Structures And Enums
Introduction towebmatrix
Lecture 04
Pointers
Ad

Viewers also liked (19)

PDF
Certificate_28
PDF
Exhibiting the Photobook
PDF
MatisseFall_2015_lr
PPTX
Castañada 2015.Pereda:Leganés
PDF
8. процедуры
PPTX
Tugas ergonomi hasna
PDF
Certificate_27
PDF
Samsung Techwin SCP-3120 Data Sheet
PDF
Samsung Techwin SCP-2370H Data Sheet
PDF
Samsung Techwin SCP-3370H Data Sheet
PPT
Power Point from 2nd City Disability studies in Education COnference, CHicago...
PDF
Certificate_25
PDF
9. баллы
PDF
Samsung Techwin SCP-2370TH Data Sheet
PDF
Samsung Techwin SCP-3371H Data Sheet
PDF
Quick facts 11515
PDF
Poster FINAL
PDF
Samsung Techwin SCP-3120VH Data Sheet
PDF
Planificador de proyectos plantilla grupo 70
Certificate_28
Exhibiting the Photobook
MatisseFall_2015_lr
Castañada 2015.Pereda:Leganés
8. процедуры
Tugas ergonomi hasna
Certificate_27
Samsung Techwin SCP-3120 Data Sheet
Samsung Techwin SCP-2370H Data Sheet
Samsung Techwin SCP-3370H Data Sheet
Power Point from 2nd City Disability studies in Education COnference, CHicago...
Certificate_25
9. баллы
Samsung Techwin SCP-2370TH Data Sheet
Samsung Techwin SCP-3371H Data Sheet
Quick facts 11515
Poster FINAL
Samsung Techwin SCP-3120VH Data Sheet
Planificador de proyectos plantilla grupo 70
Ad

Similar to structure (20)

PPT
Chapter 10 - Structures, Unions, Bit Manipulations, and Enumerations
PDF
lec14.pdf
PPT
PPTX
programming in C and Datastructures deepdive
PDF
programming in C & Data structures an easy approach
PDF
pointer in c through addressing modes esntial in c
PPT
structures and unions in 'C'
PPTX
C data types, arrays and structs
PPT
C Structures & Unions
PPTX
Unit-V.pptx
PPTX
Unit-4-1.pptxjtjrjfjfjfjfjfjfjfjrjrjrjrjejejeje
PPTX
PPTX
CC213-Week08-User-Defined Data Types.pptx
PPTX
Introduction to c
PPT
04 struct-union
PPTX
Computer science ( Structures In C ) Ppt
PPTX
CS 1106 - UNIT -3 notes for students to learn
PPT
09-structuresqwertyuiopasdfghjklmnbvcxzdfghjkl.ppt
PPT
Data structures Implementation 09-structures.ppt
PPT
pointers
Chapter 10 - Structures, Unions, Bit Manipulations, and Enumerations
lec14.pdf
programming in C and Datastructures deepdive
programming in C & Data structures an easy approach
pointer in c through addressing modes esntial in c
structures and unions in 'C'
C data types, arrays and structs
C Structures & Unions
Unit-V.pptx
Unit-4-1.pptxjtjrjfjfjfjfjfjfjfjrjrjrjrjejejeje
CC213-Week08-User-Defined Data Types.pptx
Introduction to c
04 struct-union
Computer science ( Structures In C ) Ppt
CS 1106 - UNIT -3 notes for students to learn
09-structuresqwertyuiopasdfghjklmnbvcxzdfghjkl.ppt
Data structures Implementation 09-structures.ppt
pointers

More from teach4uin (20)

PPTX
Controls
PPT
validation
PPT
validation
PPT
Master pages
PPTX
.Net framework
PPT
Scripting languages
PPTX
Css1
PPTX
Code model
PPT
Asp db
PPTX
State management
PPT
security configuration
PPT
static dynamic html tags
PPT
static dynamic html tags
PPTX
New microsoft office power point presentation
PPT
.Net overview
PPT
Stdlib functions lesson
PPT
enums
PPT
memory
PPT
array
PPT
storage clas
Controls
validation
validation
Master pages
.Net framework
Scripting languages
Css1
Code model
Asp db
State management
security configuration
static dynamic html tags
static dynamic html tags
New microsoft office power point presentation
.Net overview
Stdlib functions lesson
enums
memory
array
storage clas

Recently uploaded (20)

PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
STKI Israel Market Study 2025 version august
PPT
What is a Computer? Input Devices /output devices
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
O2C Customer Invoices to Receipt V15A.pptx
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
Getting Started with Data Integration: FME Form 101
PDF
August Patch Tuesday
PPTX
OMC Textile Division Presentation 2021.pptx
PPTX
Tartificialntelligence_presentation.pptx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
Zenith AI: Advanced Artificial Intelligence
PDF
A comparative study of natural language inference in Swahili using monolingua...
PPTX
cloud_computing_Infrastucture_as_cloud_p
PDF
Web App vs Mobile App What Should You Build First.pdf
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
STKI Israel Market Study 2025 version august
What is a Computer? Input Devices /output devices
Univ-Connecticut-ChatGPT-Presentaion.pdf
Programs and apps: productivity, graphics, security and other tools
O2C Customer Invoices to Receipt V15A.pptx
Group 1 Presentation -Planning and Decision Making .pptx
Module 1.ppt Iot fundamentals and Architecture
Getting Started with Data Integration: FME Form 101
August Patch Tuesday
OMC Textile Division Presentation 2021.pptx
Tartificialntelligence_presentation.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
1 - Historical Antecedents, Social Consideration.pdf
Enhancing emotion recognition model for a student engagement use case through...
Zenith AI: Advanced Artificial Intelligence
A comparative study of natural language inference in Swahili using monolingua...
cloud_computing_Infrastucture_as_cloud_p
Web App vs Mobile App What Should You Build First.pdf

structure

  • 1. Outline Introduction Structure Definitions Initializing Structures Accessing Members of Structures Using Structures with Functions Typedef Example: High-Performance Card Shuffling and Dealing Simulation Unions
  • 2.  Structures ◦ Collections of related variables (aggregates) under one name  Can contain variables of different data types ◦ Commonly used to define records to be stored in files ◦ Combined with pointers, can create linked lists, stacks, queues, and trees
  • 3.  Example struct card { char *face; char *suit; }; ◦ struct introduces the definition for structure card ◦ card is the structure name and is used to declare variables of the structure type ◦ card contains two members of type char * - face and suit
  • 4.  Struct information ◦ A struct cannot contain an instance of itself ◦ Can contain a member that is a pointer to the same structure type ◦ Structure definition does not reserve space in memory ◦ Creates a new data type that used to declare structure variables.  Declarations ◦ Declared like other variables: card oneCard, deck[ 52 ], *cPtr; ◦ Can use a comma separated list: struct card { char *face; char *suit; } oneCard, deck[ 52 ], *cPtr;
  • 5.  Valid Operations ◦ Assigning a structure to a structure of the same type ◦ Taking the address (&) of a structure ◦ Accessing the members of a structure ◦ Using the sizeof operator to determine the size of a structure
  • 6.  Initializer lists ◦ Example: card oneCard = { "Three", "Hearts" };  Assignment statements ◦ Example: card threeHearts = oneCard; ◦ Or: card threeHearts; threeHearts.face = “Three”; threeHearts.suit = “Hearts”;
  • 7.  Accessing structure members ◦ Dot operator (.) - use with structure variable name card myCard; printf( "%s", myCard.suit ); ◦ Arrow operator (->) - use with pointers to structure variables card *myCardPtr = &myCard; printf( "%s", myCardPtr->suit ); myCardPtr->suit equivalent to ( *myCardPtr ).suit
  • 8.  Passing structures to functions ◦ Pass entire structure  Or, pass individual members ◦ Both pass call by value  To pass structures call-by-reference ◦ Pass its address ◦ Pass reference to it  To pass arrays call-by-value ◦ Create a structure with the array as a member ◦ Pass the structure
  • 9.  typedef ◦ Creates synonyms (aliases) for previously defined data types ◦ Use typedef to create shorter type names. ◦ Example: typedef Card *CardPtr; ◦ Defines a new type name CardPtr as a synonym for type Card * ◦ typedef does not create a new data type  Only creates an alias
  • 10.  Pseudocode: ◦ Create an array of card structures ◦ Put cards in the deck ◦ Shuffle the deck ◦ Deal the cards
  • 11. 1. Load headers 1.1 Define struct 1.2 Function prototypes 1.3 Initialize deck[] and face[] 1.4 Initialize suit[] 1 /* Fig. 10.3: fig10_03.c 2 The card shuffling and dealing program using structures */ 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <time.h> 6 7 struct card { 8 const char *face; 9 const char *suit; 10 }; 11 12 typedef struct card Card; 13 14 void fillDeck( Card * const, const char *[], 15 const char *[] ); 16 void shuffle( Card * const ); 17 void deal( const Card * const ); 18 19 int main() 20 { 21 Card deck[ 52 ]; 22 const char *face[] = { "Ace", "Deuce", "Three", 23 "Four", "Five", 24 "Six", "Seven", "Eight", 25 "Nine", "Ten", 26 "Jack", "Queen", "King"}; 27 const char *suit[] = { "Hearts", "Diamonds", 28 "Clubs", "Spades"}; 29 30 srand( time( NULL ) );
  • 12. 2. Randomize 2. fillDeck 2.1 shuffle 2.2 deal 3. Function definitions 31 32 fillDeck( deck, face, suit ); 33 shuffle( deck ); 34 deal( deck ); 35 return 0; 36 } 37 38 void fillDeck( Card * const wDeck, const char * wFace[], 39 const char * wSuit[] ) 40 { 41 int i; 42 43 for ( i = 0; i <= 51; i++ ) { 44 wDeck[ i ].face = wFace[ i % 13 ]; 45 wDeck[ i ].suit = wSuit[ i / 13 ]; 46 } 47 } 48 49 void shuffle( Card * const wDeck ) 50 { 51 int i, j; 52 Card temp; 53 54 for ( i = 0; i <= 51; i++ ) { 55 j = rand() % 52; 56 temp = wDeck[ i ]; 57 wDeck[ i ] = wDeck[ j ]; 58 wDeck[ j ] = temp; 59 } 60 } Put all 52 cards in the deck. face and suit determined by remainder (modulus). Select random number between 0 and 51. Swap element i with that element.
  • 13. 3. Function definitions 61 62 void deal( const Card * const wDeck ) 63 { 64 int i; 65 66 for ( i = 0; i <= 51; i++ ) 67 printf( "%5s of %-8s%c", wDeck[ i ].face, 68 wDeck[ i ].suit, 69 ( i + 1 ) % 2 ? 't' : 'n' ); 70 } Cycle through array and print out data.
  • 14. Program Output Eight of Diamonds Ace of Hearts Eight of Clubs Five of Spades Seven of Hearts Deuce of Diamonds Ace of Clubs Ten of Diamonds Deuce of Spades Six of Diamonds Seven of Spades Deuce of Clubs Jack of Clubs Ten of Spades King of Hearts Jack of Diamonds Three of Hearts Three of Diamonds Three of Clubs Nine of Clubs Ten of Hearts Deuce of Hearts Ten of Clubs Seven of Diamonds Six of Clubs Queen of Spades Six of Hearts Three of Spades Nine of Diamonds Ace of Diamonds Jack of Spades Five of Clubs King of Diamonds Seven of Clubs Nine of Spades Four of Hearts Six of Spades Eight of Spades Queen of Diamonds Five of Diamonds Ace of Spades Nine of Hearts King of Clubs Five of Hearts King of Spades Four of Diamonds Queen of Hearts Eight of Hearts Four of Spades Jack of Hearts Four of Clubs Queen of Clubs
  • 15.  union ◦ Memory that contains a variety of objects over time ◦ Only contains one data member at a time ◦ Members of a union share space ◦ Conserves storage ◦ Only the last data member defined can be accessed  union declarations ◦ Same as struct union Number { int x; float y; }; Union myObject;
  • 16.  Valid union operations ◦ Assignment to union of same type: = ◦ Taking address: & ◦ Accessing union members: . ◦ Accessing members using pointers: ->
  • 17. 1. Define union 1.1 Initialize variables 2. Set variables 3. Print 1 /* Fig. 10.5: fig10_05.c 2 An example of a union */ 3 #include <stdio.h> 4 5 union number { 6 int x; 7 double y; 8 }; 9 10 int main() 11 { 12 union number value; 13 14 value.x = 100; 15 printf( "%sn%sn%s%dn%s%fnn", 16 "Put a value in the integer member", 17 "and print both members.", 18 "int: ", value.x, 19 "double:n", value.y ); 20 21 value.y = 100.0; 22 printf( "%sn%sn%s%dn%s%fn", 23 "Put a value in the floating member", 24 "and print both members.", 25 "int: ", value.x, 26 "double:n", value.y ); 27 return 0; 28 }
  • 18. Program Output Put a value in the integer member and print both members. int: 100 double: -92559592117433136000000000000000000000000000000000000000000000.00000 Put a value in the floating member and print both members. int: 0 double: 100.000000
  • 19. Program Output 1 January 2 February 3 March 4 April 5 May 6 June 7 July 8 August 9 September 10 October 11 November 12 December