SlideShare a Scribd company logo
C structures
     and unions

1
C structures: aggregate, yet scalar
       aggregate in that they hold multiple data items at one
        time
           named members hold data items of various types
           like the notion of class/field in C or C++
            – but without the data hiding features
       scalar in that C treats each structure as a unit
           as opposed to the “array” approach: a pointer to a collection
            of members in memory
           entire structures (not just pointers to structures) may be
            passed as function arguments, assigned to variables, etc.
           Interestingly, they cannot be compared using ==
            (rationale: too inefficient)


    2
Structure declarations
       Combined variable and type declaration
struct tag {member-list} variable-list;
       Any one of the three portions can be omitted

struct {int a, b; char *p;} x, y;                                /* omit tag */
           variables x, y declared with members as described:
            int members a, b and char pointer p.
           x and y have same type, but differ from all others –
            even if there is another declaration:
            struct {int a, b; char *p;} z;
            /* z has different type from x, y */



    3                         CS 3090: Safety Critical Programming in C
Structure declarations
struct S {int a, b; char *p;};                            /* omit variables */
       No variables are declared, but there is now a type struct
        S that can be referred to later


struct S z;             /* omit members */
           Given an earlier declaration of struct S, this declares a
            variable of that type

typedef struct {int a, b; char *p;} S;
  /* omit both tag and variables */
           This creates a simple type name S
            (more convenient than struct S)

    4                         CS 3090: Safety Critical Programming in C
Recursively defined structures
       Obviously, you can’t have a structure that contains an
        instance of itself as a member – such a data item would
        be infinitely large
       But within a structure you can refer to structures of the
        same type, via pointers
struct TREENODE {
  char *label;
  struct TREENODE *leftchild, *rightchild;
}




    5                     CS 3090: Safety Critical Programming in C
Recursively defined structures
       When two structures refer to each other, one must be
        declared in incomplete (prototype) fashion
struct HUMAN;
struct PET {
  char name[NAME_LIMIT];
  char species[NAME_LIMIT];
  struct HUMAN *owner;
} fido = {″Fido″, ″Canis lupus familiaris″};
struct HUMAN {
  char name[NAME_LIMIT];
                              We can’t initialize the owner member
  struct PET pets[PET_LIMIT];               at this point,
} sam = {″Sam″, {fido}};        since it hasn’t been declared yet


    6                    CS 3090: Safety Critical Programming in C
Member access
         Direct access operator s.m
             subscript and dot operators have same precedence and
              associate left-to-right, so we don’t need parentheses for
              sam.pets[0].species
         Indirect access s->m: equivalent to (*s).m
           Dereference a pointer to a structure, then return a member of
            that structure
           Dot operator has higher precedence than indirection operator
            , so parentheses are needed in (*s).m
          (*fido.owner).name                  or     fido.owner->name

   . evaluated first: access owner member                    . and -> have equal precedence
* evaluated next: dereference pointer to HUMAN                     and associate left-to-right
      7                         CS 3090: Safety Critical Programming in C
Memory layout
struct COST { int amount;
                 char currency_type[2]; }
struct PART { char id[2];
                 struct COST cost;
                 int num_avail; }
layout of struct PART:
                                      currency_type


     id                amount                                       num_avail

                               cost
Here, the system uses 4-byte alignment of integers,
so amount and num_avail must be aligned
Four bytes wasted for each structure!

 8                      CS 3090: Safety Critical Programming in C
Memory layout
A better alternative (from a space perspective):
struct COST { int amount;
              char currency_type; }
struct PART { struct COST cost;
              char id[2];
              int num_avail;
}
                      currency_type


      amount               id          num_avail
            cost



 9                    CS 3090: Safety Critical Programming in C
Bit fields                    Bit field members must be ints

    If space is a serious concern, you can select the number
     of bits used for each member
struct CHAR { unsigned ch: 7;
                                    Note: This won’t work on
              unsigned font: 6;     machines with 16-bit ints
              unsigned size: 19; };
Layout possibilities (machine-dependent):


            ch      font                                           size



                                    size              font          ch


    10                 CS 3090: Safety Critical Programming in C
Bit fields
    Portability is an issue:
        Do any bit field sizes exceed the machine’s int size?
        Is there any pointer manipulation in your code that assumes a
         particular layout?
    Bit fields are “syntactic sugar” for more complex shifting/
     masking
        e.g. to get font value, mask off the ch and size bits, then shift
         right by 19
        This is what actually happens in the object code –
         bit fields just make it look simpler at the source level



    11                      CS 3090: Safety Critical Programming in C
Structures as function arguments
    Structures are scalars, so they can be returned and
     passed as arguments – just like ints, chars
struct BIG changestruct(struct BIG s);
        Call by value: temporary copy of structure is created
        Caution: passing large structures is inefficient
         – involves a lot of copying
    avoid by passing a pointer to the structure instead:
void changestruct(struct BIG *s);
    What if the struct argument is read-only?
        Safe approach: use const
void changestruct(struct BIG const *s);


    12                     CS 3090: Safety Critical Programming in C
Unions
    Like structures, but every member occupies the same
     region of memory!
        Structures: members are “and”ed together: “name and species
         and owner”
        Unions: members are “xor”ed together

union VALUE {
   float f;
   int i;
   char *s;
};
/* either a float xor an int xor a string */

    13                    CS 3090: Safety Critical Programming in C
Unions
    Up to programmer to determine how to interpret a
     union (i.e. which member to access)
    Often used in conjunction with a “type” variable that
     indicates how to interpret the union value

enum TYPE { INT, FLOAT, STRING };
struct VARIABLE {
   enum TYPE type;             Access type to determine
   union VALUE value;           how to interpret value
};




    14                 CS 3090: Safety Critical Programming in C
Unions
    Storage
        size of union is the size of its largest member
        avoid unions with widely varying member sizes;
         for the larger data types, consider using pointers instead
    Initialization
        Union may only be initialized to a value appropriate for the
         type of its first member




    15                      CS 3090: Safety Critical Programming in C

More Related Content

What's hot

Structure & union
Structure & unionStructure & union
Structure & union
Rupesh Mishra
 
Function overloading(c++)
Function overloading(c++)Function overloading(c++)
Function overloading(c++)
Ritika Sharma
 
Strings Functions in C Programming
Strings Functions in C ProgrammingStrings Functions in C Programming
Strings Functions in C Programming
DevoAjit Gupta
 
Structure of C++ - R.D.Sivakumar
Structure of C++ - R.D.SivakumarStructure of C++ - R.D.Sivakumar
Structure of C++ - R.D.Sivakumar
Sivakumar R D .
 
C++ Pointers And References
C++ Pointers And ReferencesC++ Pointers And References
C++ Pointers And Referencesverisan
 
Templates in c++
Templates in c++Templates in c++
Templates in c++
ThamizhselviKrishnam
 
RECURSION IN C
RECURSION IN C RECURSION IN C
RECURSION IN C
v_jk
 
Templates in C++
Templates in C++Templates in C++
Templates in C++Tech_MX
 
Object Oriented Programming Using C++
Object Oriented Programming Using C++Object Oriented Programming Using C++
Object Oriented Programming Using C++
Muhammad Waqas
 
structure and union
structure and unionstructure and union
structure and unionstudent
 
INLINE FUNCTION IN C++
INLINE FUNCTION IN C++INLINE FUNCTION IN C++
INLINE FUNCTION IN C++
Vraj Patel
 
Functions in c++
Functions in c++Functions in c++
Functions in c++
Maaz Hasan
 
Pointers in c - Mohammad Salman
Pointers in c - Mohammad SalmanPointers in c - Mohammad Salman
Pointers in c - Mohammad Salman
MohammadSalman129
 
Types of function call
Types of function callTypes of function call
Types of function call
ArijitDhali
 
C functions
C functionsC functions
Function overloading
Function overloadingFunction overloading
Function overloading
Selvin Josy Bai Somu
 
Function in C
Function in CFunction in C
Function in C
Dr. Abhineet Anand
 
Object oriented programming c++
Object oriented programming c++Object oriented programming c++
Object oriented programming c++
Ankur Pandey
 

What's hot (20)

Structure & union
Structure & unionStructure & union
Structure & union
 
Function overloading(c++)
Function overloading(c++)Function overloading(c++)
Function overloading(c++)
 
Strings Functions in C Programming
Strings Functions in C ProgrammingStrings Functions in C Programming
Strings Functions in C Programming
 
Structure of C++ - R.D.Sivakumar
Structure of C++ - R.D.SivakumarStructure of C++ - R.D.Sivakumar
Structure of C++ - R.D.Sivakumar
 
C++ Pointers And References
C++ Pointers And ReferencesC++ Pointers And References
C++ Pointers And References
 
Templates in c++
Templates in c++Templates in c++
Templates in c++
 
RECURSION IN C
RECURSION IN C RECURSION IN C
RECURSION IN C
 
Templates in C++
Templates in C++Templates in C++
Templates in C++
 
Object Oriented Programming Using C++
Object Oriented Programming Using C++Object Oriented Programming Using C++
Object Oriented Programming Using C++
 
5bit field
5bit field5bit field
5bit field
 
structure and union
structure and unionstructure and union
structure and union
 
INLINE FUNCTION IN C++
INLINE FUNCTION IN C++INLINE FUNCTION IN C++
INLINE FUNCTION IN C++
 
Functions in c++
Functions in c++Functions in c++
Functions in c++
 
Break and continue
Break and continueBreak and continue
Break and continue
 
Pointers in c - Mohammad Salman
Pointers in c - Mohammad SalmanPointers in c - Mohammad Salman
Pointers in c - Mohammad Salman
 
Types of function call
Types of function callTypes of function call
Types of function call
 
C functions
C functionsC functions
C functions
 
Function overloading
Function overloadingFunction overloading
Function overloading
 
Function in C
Function in CFunction in C
Function in C
 
Object oriented programming c++
Object oriented programming c++Object oriented programming c++
Object oriented programming c++
 

Similar to C Structures And Unions

C Structures & Unions
C Structures & UnionsC Structures & Unions
C Structures & Unions
Ram Sagar Mourya
 
structures and unions in 'C'
structures and unions in 'C'structures and unions in 'C'
structures and unions in 'C'
illpa
 
Oop lec 3(structures)
Oop lec 3(structures)Oop lec 3(structures)
Oop lec 3(structures)Asfand Hassan
 
Module 5-Structure and Union
Module 5-Structure and UnionModule 5-Structure and Union
Module 5-Structure and Union
nikshaikh786
 
Structures
StructuresStructures
Structures
arshpreetkaur07
 
structenumtypedefunion.pptx
structenumtypedefunion.pptxstructenumtypedefunion.pptx
structenumtypedefunion.pptx
KUPPALAPADMINI
 
03 structures
03 structures03 structures
03 structures
Rajan Gautam
 
slideset 7 structure and union (1).pdf
slideset 7 structure and union (1).pdfslideset 7 structure and union (1).pdf
slideset 7 structure and union (1).pdf
HimanshuKansal22
 
Chapter 8 Structure Part 2 (1).pptx
Chapter 8 Structure Part 2 (1).pptxChapter 8 Structure Part 2 (1).pptx
Chapter 8 Structure Part 2 (1).pptx
Abhishekkumarsingh630054
 
C++_notes.pdf
C++_notes.pdfC++_notes.pdf
C++_notes.pdf
HimanshuSharma997566
 
C structure and union
C structure and unionC structure and union
C structure and union
Thesis Scientist Private Limited
 
C introduction
C introductionC introduction
C introduction
MadhuriPareek
 
structure1.pdf
structure1.pdfstructure1.pdf
structure1.pdf
AbhimanyuKumarYadav3
 
Pointers and Structures
Pointers and StructuresPointers and Structures
Pointers and Structures
Gem WeBlog
 
Chapter4.pptx
Chapter4.pptxChapter4.pptx
Chapter4.pptx
WondimuBantihun1
 
C Introduction and bascis of high level programming
C Introduction and bascis of high level programmingC Introduction and bascis of high level programming
C Introduction and bascis of high level programming
vipulkondekar
 
Structures_Final_KLE (2).pptx
Structures_Final_KLE (2).pptxStructures_Final_KLE (2).pptx
Structures_Final_KLE (2).pptx
ShreevatsaAlawandi
 

Similar to C Structures And Unions (20)

C Structures & Unions
C Structures & UnionsC Structures & Unions
C Structures & Unions
 
structures and unions in 'C'
structures and unions in 'C'structures and unions in 'C'
structures and unions in 'C'
 
Oop lec 3(structures)
Oop lec 3(structures)Oop lec 3(structures)
Oop lec 3(structures)
 
Structure
StructureStructure
Structure
 
Module 5-Structure and Union
Module 5-Structure and UnionModule 5-Structure and Union
Module 5-Structure and Union
 
Structures
StructuresStructures
Structures
 
structenumtypedefunion.pptx
structenumtypedefunion.pptxstructenumtypedefunion.pptx
structenumtypedefunion.pptx
 
03 structures
03 structures03 structures
03 structures
 
slideset 7 structure and union (1).pdf
slideset 7 structure and union (1).pdfslideset 7 structure and union (1).pdf
slideset 7 structure and union (1).pdf
 
Advanced+pointers
Advanced+pointersAdvanced+pointers
Advanced+pointers
 
Chapter 8 Structure Part 2 (1).pptx
Chapter 8 Structure Part 2 (1).pptxChapter 8 Structure Part 2 (1).pptx
Chapter 8 Structure Part 2 (1).pptx
 
C++_notes.pdf
C++_notes.pdfC++_notes.pdf
C++_notes.pdf
 
Unit 4 qba
Unit 4 qbaUnit 4 qba
Unit 4 qba
 
C structure and union
C structure and unionC structure and union
C structure and union
 
C introduction
C introductionC introduction
C introduction
 
structure1.pdf
structure1.pdfstructure1.pdf
structure1.pdf
 
Pointers and Structures
Pointers and StructuresPointers and Structures
Pointers and Structures
 
Chapter4.pptx
Chapter4.pptxChapter4.pptx
Chapter4.pptx
 
C Introduction and bascis of high level programming
C Introduction and bascis of high level programmingC Introduction and bascis of high level programming
C Introduction and bascis of high level programming
 
Structures_Final_KLE (2).pptx
Structures_Final_KLE (2).pptxStructures_Final_KLE (2).pptx
Structures_Final_KLE (2).pptx
 

More from Ram Sagar Mourya

A must Sql notes for beginners
A must Sql notes for beginnersA must Sql notes for beginners
A must Sql notes for beginners
Ram Sagar Mourya
 
There Is Always A Better Way
There Is Always A Better WayThere Is Always A Better Way
There Is Always A Better Way
Ram Sagar Mourya
 
Attitude
AttitudeAttitude
3 Things In Our Life
3 Things In Our Life3 Things In Our Life
3 Things In Our Life
Ram Sagar Mourya
 
Microsoft Word Shortcut Keys
Microsoft Word Shortcut KeysMicrosoft Word Shortcut Keys
Microsoft Word Shortcut KeysRam Sagar Mourya
 
Apple Macintosh Shortcut Keys
Apple Macintosh Shortcut KeysApple Macintosh Shortcut Keys
Apple Macintosh Shortcut KeysRam Sagar Mourya
 
Discrete Mathematics - Mathematics For Computer Science
Discrete Mathematics -  Mathematics For Computer ScienceDiscrete Mathematics -  Mathematics For Computer Science
Discrete Mathematics - Mathematics For Computer Science
Ram Sagar Mourya
 
Asp.Net Tutorials
Asp.Net TutorialsAsp.Net Tutorials
Asp.Net Tutorials
Ram Sagar Mourya
 
Asp.Net The Data List Control
Asp.Net   The Data List ControlAsp.Net   The Data List Control
Asp.Net The Data List Control
Ram Sagar Mourya
 
Asp.Net Database
Asp.Net DatabaseAsp.Net Database
Asp.Net Database
Ram Sagar Mourya
 

More from Ram Sagar Mourya (11)

A must Sql notes for beginners
A must Sql notes for beginnersA must Sql notes for beginners
A must Sql notes for beginners
 
There Is Always A Better Way
There Is Always A Better WayThere Is Always A Better Way
There Is Always A Better Way
 
Attitude
AttitudeAttitude
Attitude
 
3 Things In Our Life
3 Things In Our Life3 Things In Our Life
3 Things In Our Life
 
Microsoft Word Shortcut Keys
Microsoft Word Shortcut KeysMicrosoft Word Shortcut Keys
Microsoft Word Shortcut Keys
 
Apple Macintosh Shortcut Keys
Apple Macintosh Shortcut KeysApple Macintosh Shortcut Keys
Apple Macintosh Shortcut Keys
 
Discrete Mathematics - Mathematics For Computer Science
Discrete Mathematics -  Mathematics For Computer ScienceDiscrete Mathematics -  Mathematics For Computer Science
Discrete Mathematics - Mathematics For Computer Science
 
.net framework
.net framework.net framework
.net framework
 
Asp.Net Tutorials
Asp.Net TutorialsAsp.Net Tutorials
Asp.Net Tutorials
 
Asp.Net The Data List Control
Asp.Net   The Data List ControlAsp.Net   The Data List Control
Asp.Net The Data List Control
 
Asp.Net Database
Asp.Net DatabaseAsp.Net Database
Asp.Net Database
 

Recently uploaded

Structural Design Process: Step-by-Step Guide for Buildings
Structural Design Process: Step-by-Step Guide for BuildingsStructural Design Process: Step-by-Step Guide for Buildings
Structural Design Process: Step-by-Step Guide for Buildings
Chandresh Chudasama
 
Meas_Dylan_DMBS_PB1_2024-05XX_Revised.pdf
Meas_Dylan_DMBS_PB1_2024-05XX_Revised.pdfMeas_Dylan_DMBS_PB1_2024-05XX_Revised.pdf
Meas_Dylan_DMBS_PB1_2024-05XX_Revised.pdf
dylandmeas
 
The Influence of Marketing Strategy and Market Competition on Business Perfor...
The Influence of Marketing Strategy and Market Competition on Business Perfor...The Influence of Marketing Strategy and Market Competition on Business Perfor...
The Influence of Marketing Strategy and Market Competition on Business Perfor...
Adam Smith
 
amptalk_RecruitingDeck_english_2024.06.05
amptalk_RecruitingDeck_english_2024.06.05amptalk_RecruitingDeck_english_2024.06.05
amptalk_RecruitingDeck_english_2024.06.05
marketing317746
 
Top mailing list providers in the USA.pptx
Top mailing list providers in the USA.pptxTop mailing list providers in the USA.pptx
Top mailing list providers in the USA.pptx
JeremyPeirce1
 
ikea_woodgreen_petscharity_dog-alogue_digital.pdf
ikea_woodgreen_petscharity_dog-alogue_digital.pdfikea_woodgreen_petscharity_dog-alogue_digital.pdf
ikea_woodgreen_petscharity_dog-alogue_digital.pdf
agatadrynko
 
Tata Group Dials Taiwan for Its Chipmaking Ambition in Gujarat’s Dholera
Tata Group Dials Taiwan for Its Chipmaking Ambition in Gujarat’s DholeraTata Group Dials Taiwan for Its Chipmaking Ambition in Gujarat’s Dholera
Tata Group Dials Taiwan for Its Chipmaking Ambition in Gujarat’s Dholera
Avirahi City Dholera
 
Agency Managed Advisory Board As a Solution To Career Path Defining Business ...
Agency Managed Advisory Board As a Solution To Career Path Defining Business ...Agency Managed Advisory Board As a Solution To Career Path Defining Business ...
Agency Managed Advisory Board As a Solution To Career Path Defining Business ...
Boris Ziegler
 
Event Report - SAP Sapphire 2024 Orlando - lots of innovation and old challenges
Event Report - SAP Sapphire 2024 Orlando - lots of innovation and old challengesEvent Report - SAP Sapphire 2024 Orlando - lots of innovation and old challenges
Event Report - SAP Sapphire 2024 Orlando - lots of innovation and old challenges
Holger Mueller
 
An introduction to the cryptocurrency investment platform Binance Savings.
An introduction to the cryptocurrency investment platform Binance Savings.An introduction to the cryptocurrency investment platform Binance Savings.
An introduction to the cryptocurrency investment platform Binance Savings.
Any kyc Account
 
3.0 Project 2_ Developing My Brand Identity Kit.pptx
3.0 Project 2_ Developing My Brand Identity Kit.pptx3.0 Project 2_ Developing My Brand Identity Kit.pptx
3.0 Project 2_ Developing My Brand Identity Kit.pptx
tanyjahb
 
Building Your Employer Brand with Social Media
Building Your Employer Brand with Social MediaBuilding Your Employer Brand with Social Media
Building Your Employer Brand with Social Media
LuanWise
 
Digital Transformation and IT Strategy Toolkit and Templates
Digital Transformation and IT Strategy Toolkit and TemplatesDigital Transformation and IT Strategy Toolkit and Templates
Digital Transformation and IT Strategy Toolkit and Templates
Aurelien Domont, MBA
 
buy old yahoo accounts buy yahoo accounts
buy old yahoo accounts buy yahoo accountsbuy old yahoo accounts buy yahoo accounts
buy old yahoo accounts buy yahoo accounts
Susan Laney
 
Creative Web Design Company in Singapore
Creative Web Design Company in SingaporeCreative Web Design Company in Singapore
Creative Web Design Company in Singapore
techboxsqauremedia
 
FIA officials brutally tortured innocent and snatched 200 Bitcoins of worth 4...
FIA officials brutally tortured innocent and snatched 200 Bitcoins of worth 4...FIA officials brutally tortured innocent and snatched 200 Bitcoins of worth 4...
FIA officials brutally tortured innocent and snatched 200 Bitcoins of worth 4...
jamalseoexpert1978
 
Chapter 7 Final business management sciences .ppt
Chapter 7 Final business management sciences .pptChapter 7 Final business management sciences .ppt
Chapter 7 Final business management sciences .ppt
ssuser567e2d
 
The Influence of Marketing Strategy and Market Competition on Business Perfor...
The Influence of Marketing Strategy and Market Competition on Business Perfor...The Influence of Marketing Strategy and Market Competition on Business Perfor...
The Influence of Marketing Strategy and Market Competition on Business Perfor...
Adam Smith
 
ModelingMarketingStrategiesMKS.CollumbiaUniversitypdf
ModelingMarketingStrategiesMKS.CollumbiaUniversitypdfModelingMarketingStrategiesMKS.CollumbiaUniversitypdf
ModelingMarketingStrategiesMKS.CollumbiaUniversitypdf
fisherameliaisabella
 
Examining the Effect of Customer Services Quality and Online Reviews in Unive...
Examining the Effect of Customer Services Quality and Online Reviews in Unive...Examining the Effect of Customer Services Quality and Online Reviews in Unive...
Examining the Effect of Customer Services Quality and Online Reviews in Unive...
Adam Smith
 

Recently uploaded (20)

Structural Design Process: Step-by-Step Guide for Buildings
Structural Design Process: Step-by-Step Guide for BuildingsStructural Design Process: Step-by-Step Guide for Buildings
Structural Design Process: Step-by-Step Guide for Buildings
 
Meas_Dylan_DMBS_PB1_2024-05XX_Revised.pdf
Meas_Dylan_DMBS_PB1_2024-05XX_Revised.pdfMeas_Dylan_DMBS_PB1_2024-05XX_Revised.pdf
Meas_Dylan_DMBS_PB1_2024-05XX_Revised.pdf
 
The Influence of Marketing Strategy and Market Competition on Business Perfor...
The Influence of Marketing Strategy and Market Competition on Business Perfor...The Influence of Marketing Strategy and Market Competition on Business Perfor...
The Influence of Marketing Strategy and Market Competition on Business Perfor...
 
amptalk_RecruitingDeck_english_2024.06.05
amptalk_RecruitingDeck_english_2024.06.05amptalk_RecruitingDeck_english_2024.06.05
amptalk_RecruitingDeck_english_2024.06.05
 
Top mailing list providers in the USA.pptx
Top mailing list providers in the USA.pptxTop mailing list providers in the USA.pptx
Top mailing list providers in the USA.pptx
 
ikea_woodgreen_petscharity_dog-alogue_digital.pdf
ikea_woodgreen_petscharity_dog-alogue_digital.pdfikea_woodgreen_petscharity_dog-alogue_digital.pdf
ikea_woodgreen_petscharity_dog-alogue_digital.pdf
 
Tata Group Dials Taiwan for Its Chipmaking Ambition in Gujarat’s Dholera
Tata Group Dials Taiwan for Its Chipmaking Ambition in Gujarat’s DholeraTata Group Dials Taiwan for Its Chipmaking Ambition in Gujarat’s Dholera
Tata Group Dials Taiwan for Its Chipmaking Ambition in Gujarat’s Dholera
 
Agency Managed Advisory Board As a Solution To Career Path Defining Business ...
Agency Managed Advisory Board As a Solution To Career Path Defining Business ...Agency Managed Advisory Board As a Solution To Career Path Defining Business ...
Agency Managed Advisory Board As a Solution To Career Path Defining Business ...
 
Event Report - SAP Sapphire 2024 Orlando - lots of innovation and old challenges
Event Report - SAP Sapphire 2024 Orlando - lots of innovation and old challengesEvent Report - SAP Sapphire 2024 Orlando - lots of innovation and old challenges
Event Report - SAP Sapphire 2024 Orlando - lots of innovation and old challenges
 
An introduction to the cryptocurrency investment platform Binance Savings.
An introduction to the cryptocurrency investment platform Binance Savings.An introduction to the cryptocurrency investment platform Binance Savings.
An introduction to the cryptocurrency investment platform Binance Savings.
 
3.0 Project 2_ Developing My Brand Identity Kit.pptx
3.0 Project 2_ Developing My Brand Identity Kit.pptx3.0 Project 2_ Developing My Brand Identity Kit.pptx
3.0 Project 2_ Developing My Brand Identity Kit.pptx
 
Building Your Employer Brand with Social Media
Building Your Employer Brand with Social MediaBuilding Your Employer Brand with Social Media
Building Your Employer Brand with Social Media
 
Digital Transformation and IT Strategy Toolkit and Templates
Digital Transformation and IT Strategy Toolkit and TemplatesDigital Transformation and IT Strategy Toolkit and Templates
Digital Transformation and IT Strategy Toolkit and Templates
 
buy old yahoo accounts buy yahoo accounts
buy old yahoo accounts buy yahoo accountsbuy old yahoo accounts buy yahoo accounts
buy old yahoo accounts buy yahoo accounts
 
Creative Web Design Company in Singapore
Creative Web Design Company in SingaporeCreative Web Design Company in Singapore
Creative Web Design Company in Singapore
 
FIA officials brutally tortured innocent and snatched 200 Bitcoins of worth 4...
FIA officials brutally tortured innocent and snatched 200 Bitcoins of worth 4...FIA officials brutally tortured innocent and snatched 200 Bitcoins of worth 4...
FIA officials brutally tortured innocent and snatched 200 Bitcoins of worth 4...
 
Chapter 7 Final business management sciences .ppt
Chapter 7 Final business management sciences .pptChapter 7 Final business management sciences .ppt
Chapter 7 Final business management sciences .ppt
 
The Influence of Marketing Strategy and Market Competition on Business Perfor...
The Influence of Marketing Strategy and Market Competition on Business Perfor...The Influence of Marketing Strategy and Market Competition on Business Perfor...
The Influence of Marketing Strategy and Market Competition on Business Perfor...
 
ModelingMarketingStrategiesMKS.CollumbiaUniversitypdf
ModelingMarketingStrategiesMKS.CollumbiaUniversitypdfModelingMarketingStrategiesMKS.CollumbiaUniversitypdf
ModelingMarketingStrategiesMKS.CollumbiaUniversitypdf
 
Examining the Effect of Customer Services Quality and Online Reviews in Unive...
Examining the Effect of Customer Services Quality and Online Reviews in Unive...Examining the Effect of Customer Services Quality and Online Reviews in Unive...
Examining the Effect of Customer Services Quality and Online Reviews in Unive...
 

C Structures And Unions

  • 1. C structures and unions 1
  • 2. C structures: aggregate, yet scalar  aggregate in that they hold multiple data items at one time  named members hold data items of various types  like the notion of class/field in C or C++ – but without the data hiding features  scalar in that C treats each structure as a unit  as opposed to the “array” approach: a pointer to a collection of members in memory  entire structures (not just pointers to structures) may be passed as function arguments, assigned to variables, etc.  Interestingly, they cannot be compared using == (rationale: too inefficient) 2
  • 3. Structure declarations  Combined variable and type declaration struct tag {member-list} variable-list;  Any one of the three portions can be omitted struct {int a, b; char *p;} x, y; /* omit tag */  variables x, y declared with members as described: int members a, b and char pointer p.  x and y have same type, but differ from all others – even if there is another declaration: struct {int a, b; char *p;} z; /* z has different type from x, y */ 3 CS 3090: Safety Critical Programming in C
  • 4. Structure declarations struct S {int a, b; char *p;}; /* omit variables */  No variables are declared, but there is now a type struct S that can be referred to later struct S z; /* omit members */  Given an earlier declaration of struct S, this declares a variable of that type typedef struct {int a, b; char *p;} S; /* omit both tag and variables */  This creates a simple type name S (more convenient than struct S) 4 CS 3090: Safety Critical Programming in C
  • 5. Recursively defined structures  Obviously, you can’t have a structure that contains an instance of itself as a member – such a data item would be infinitely large  But within a structure you can refer to structures of the same type, via pointers struct TREENODE { char *label; struct TREENODE *leftchild, *rightchild; } 5 CS 3090: Safety Critical Programming in C
  • 6. Recursively defined structures  When two structures refer to each other, one must be declared in incomplete (prototype) fashion struct HUMAN; struct PET { char name[NAME_LIMIT]; char species[NAME_LIMIT]; struct HUMAN *owner; } fido = {″Fido″, ″Canis lupus familiaris″}; struct HUMAN { char name[NAME_LIMIT]; We can’t initialize the owner member struct PET pets[PET_LIMIT]; at this point, } sam = {″Sam″, {fido}}; since it hasn’t been declared yet 6 CS 3090: Safety Critical Programming in C
  • 7. Member access  Direct access operator s.m  subscript and dot operators have same precedence and associate left-to-right, so we don’t need parentheses for sam.pets[0].species  Indirect access s->m: equivalent to (*s).m  Dereference a pointer to a structure, then return a member of that structure  Dot operator has higher precedence than indirection operator , so parentheses are needed in (*s).m (*fido.owner).name or fido.owner->name . evaluated first: access owner member . and -> have equal precedence * evaluated next: dereference pointer to HUMAN and associate left-to-right 7 CS 3090: Safety Critical Programming in C
  • 8. Memory layout struct COST { int amount; char currency_type[2]; } struct PART { char id[2]; struct COST cost; int num_avail; } layout of struct PART: currency_type id amount num_avail cost Here, the system uses 4-byte alignment of integers, so amount and num_avail must be aligned Four bytes wasted for each structure! 8 CS 3090: Safety Critical Programming in C
  • 9. Memory layout A better alternative (from a space perspective): struct COST { int amount; char currency_type; } struct PART { struct COST cost; char id[2]; int num_avail; } currency_type amount id num_avail cost 9 CS 3090: Safety Critical Programming in C
  • 10. Bit fields Bit field members must be ints  If space is a serious concern, you can select the number of bits used for each member struct CHAR { unsigned ch: 7; Note: This won’t work on unsigned font: 6; machines with 16-bit ints unsigned size: 19; }; Layout possibilities (machine-dependent): ch font size size font ch 10 CS 3090: Safety Critical Programming in C
  • 11. Bit fields  Portability is an issue:  Do any bit field sizes exceed the machine’s int size?  Is there any pointer manipulation in your code that assumes a particular layout?  Bit fields are “syntactic sugar” for more complex shifting/ masking  e.g. to get font value, mask off the ch and size bits, then shift right by 19  This is what actually happens in the object code – bit fields just make it look simpler at the source level 11 CS 3090: Safety Critical Programming in C
  • 12. Structures as function arguments  Structures are scalars, so they can be returned and passed as arguments – just like ints, chars struct BIG changestruct(struct BIG s);  Call by value: temporary copy of structure is created  Caution: passing large structures is inefficient – involves a lot of copying  avoid by passing a pointer to the structure instead: void changestruct(struct BIG *s);  What if the struct argument is read-only?  Safe approach: use const void changestruct(struct BIG const *s); 12 CS 3090: Safety Critical Programming in C
  • 13. Unions  Like structures, but every member occupies the same region of memory!  Structures: members are “and”ed together: “name and species and owner”  Unions: members are “xor”ed together union VALUE { float f; int i; char *s; }; /* either a float xor an int xor a string */ 13 CS 3090: Safety Critical Programming in C
  • 14. Unions  Up to programmer to determine how to interpret a union (i.e. which member to access)  Often used in conjunction with a “type” variable that indicates how to interpret the union value enum TYPE { INT, FLOAT, STRING }; struct VARIABLE { enum TYPE type; Access type to determine union VALUE value; how to interpret value }; 14 CS 3090: Safety Critical Programming in C
  • 15. Unions  Storage  size of union is the size of its largest member  avoid unions with widely varying member sizes; for the larger data types, consider using pointers instead  Initialization  Union may only be initialized to a value appropriate for the type of its first member 15 CS 3090: Safety Critical Programming in C