CPNM Lecture 13 Structures and Unions
CPNM Lecture 13 Structures and Unions
Jadavpur University
2023
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 1 / 18
Introduction
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 2 / 18
Structures I
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 3 / 18
Structures II
Example:
struct student{
char name[40];
int roll;
int age;
}
...
printf("%d\n", sizeof(struct student)); /*Output 48*/
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 4 / 18
Structures III
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 5 / 18
Structures IV
Structure declarations
struct student{
char name[40];
int roll;
int age;
} s1, students[20], *p;
OR
struct student s1, students[20], *p;
Structure initialization
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 6 / 18
Structures V
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 7 / 18
Operations on Structure
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 8 / 18
Accessing Members of Structures
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 9 / 18
Structures and Functions
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 10 / 18
typedef
typedef struct{
char name[40];
int roll;
int age;
} student;
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 12 / 18
Structures as Arguments and Return Values II
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 13 / 18
Nested Structures - Example I
typedef struct{
char first[20];
char middleInitial;
char last[20];
} personName;
typedef struct{
personName name;
int roll;
int age;
} student;
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 14 / 18
Arrays of Structures - Example I
student BCSE[70];
...
for(i=0; i<70;i++)
printStudent(BCSE[i]);
...
BCSE[10].age=20;
strcpy(BCSE[10].name.first, "ABC");
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 15 / 18
Unions I
typedef union{
int x;
unsigned char c[4];
} Number;
Number n;
int i;
n.x=10;
for(i=0;i<4;i++)
printf("%d ", n.c[i]); /*Output 10 0 0 0*/
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 16 / 18
Unions II
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 17 / 18
Endianness
unsigned int i = 1;
char *c = (char*)&i;
if (*c)
printf("Little endian");
else
printf("Big endian");
Mridul Sankar Barik (Jadavpur University) CPNM Lecture 13 - Structures and Unions 2023 18 / 18