Structures, Files and Pointers
130 likes | 280 Vues
This guide introduces key concepts of structures and pointers in C programming, focusing on defining and accessing structure members using the `typedef` and `struct` keywords. It demonstrates how to declare a `student_info` structure, access its members with the dot operator, and illustrate pointer usage to manipulate structure elements. The guide also features a practical example of reading data from an input file into an array of structures and printing the student information. Ideal for beginners looking to master data structures in C.
Structures, Files and Pointers
E N D
Presentation Transcript
Review - Defining Structures • The following is a definition of a new type typedefstruct { char name[64]; char course[128]; int year; } student_info; • student variables of type student can be declared as follows. • student_info student_1; // same as declaring int year; // all structures declared as of type student_info will have members // name, course and year
Review - Accessing members of structures • All members of a structure behave exactly the way they would if they were being used independently • However, to access members of a structure we have to use the . (dot) operator • Consider the above declaration: student_info student_1; • To assign values to its members, the syntax is: strcpy(student_1.name, “John”); strcpy(student_1.course, “COP 3223H”); student_1.year = 2014;
Example – Files and structures • Write a program to declare a new data type called student_info using the struct and typedef keywords. • The structstudent_info should have student’s name, course and graduation year as members. • Create an input file that contains information about all students’ names, courses and graduation years • Your program should next read all data from the input file in an array of student_info structures • Print all data on screen
Structures and Pointers • Just as with any other data type, pointers can contain the address of a structure • When using a pointer to variable, we can access the original contents of the variable with the de-referencing operator * e.g. int i = 20; int *ptr = &i; //notice the context of * *ptr = 30; // changes the contents of variable i • Similarly, a pointer can contain the address of a structure e.g. student_info*student; //assuming student_info is //already declared as a struct
Structures and Pointers • How do you access structure elements through a pointer variable ??? • To de-reference members of a structure through a pointer to structure, we use the member selector operator -> e.g. student_info *B = &student_1; B->year = 2014; // use the member selector //operator -> to access a struct’s //member through its pointer
An array of structures student_1[2] 2015 cot4226 jake 1500 2014 1500 cop3223h john 1000 1000 1000 student_1 [2] A [2] is the alias for student_1 array in the function print_student_info()
Pointer to a single structure in an array of structures student_1[2] 2015 cot4226 jake 1500 2014 1500 cop3223h john 1000 1000 1000 student_1 [2] 1000 B holds &student_1[0] A [2] is the alias for student_1 array in the function print_student_info()
C is an array of pointers holding addresses of multiple structures in student_1[2] 2015 cot4226 jake 1500 1500 2014 cop3223h 3003 1500 3000 1000 john 1000 3000 C 1000 student_1 [2] C [2] is the alias for student_ptr_array in the function print_student_info() A [2] is the alias for student_1 array in the function print_student_info() B holds &student_1[0] 1000 1000