Array of structures
We can create array of structures similar to creating array of any primitive data types. Below is the general form of declaration for array of structure.
struct <structure_name> <array_name>[SIZE];
Consider the following example
struct student {
char name[32];
int age, rollno;
};
struct student arr[2];
Here, arr is an array of 2 structure elements.
Let us see how to initialize an array of structures.
Method 1:
struct student arr[2] = { {"Tom", 10, 101}, {"Jerry", 11, 102} };
Method 2:
strcpy(arr[0].name, "Tom");
arr[0].age = 10;
arr[0].rollno = 101;
strcpy(arr[1].name, "Jerry");
arr[1].age = 11;
arr[1].rollno = 102;
struct <structure_name> <array_name>[SIZE];
Consider the following example
struct student {
char name[32];
int age, rollno;
};
struct student arr[2];
Here, arr is an array of 2 structure elements.
Let us see how to initialize an array of structures.
Method 1:
struct student arr[2] = { {"Tom", 10, 101}, {"Jerry", 11, 102} };
Method 2:
strcpy(arr[0].name, "Tom");
arr[0].age = 10;
arr[0].rollno = 101;
strcpy(arr[1].name, "Jerry");
arr[1].age = 11;
arr[1].rollno = 102;
Apart from the above, we are allowed to do partial initialization for structure elements in an array.
Consider the following,
struct student arr[2] = {{"Tom", 10, 101}, {"Jerry"}};
In the above example, we have done partial initialization for second element in the structure array (ie) we have assigned value for the structure member name, whereas the structure members age and rollno are left uninitialized. We can assign values to those uninitialized structure members whenever it is needed.
arr[1].age = 11;
arr[1].rollno = 101;
If the array of structure is declared as global variable, then structure members in each structure element are initialized to 0 by default. Similarly, if any structure element is partially initialized(few structure members alone initialized), then the left over structure members are initialized to 0 by default.
Array of structures example in C
#include <stdio.h>
#include <string.h>
struct student {
char name[32];
int age, rollno;
};
struct student arr1[2]; // global declaration for array of structures
/* prints the contents of the given array */
void printDetails(struct student arr[2]) {
int i;
for (i = 0; i < 2; i++) {
printf("Name: %s\n", arr[i].name);
printf("Age: %d Rollno: %d\n", arr[i].age, arr[i].rollno);
}
printf("\n");
return;
}
int main() {
/* complete initialization */
struct student arr2[2] = {{"Ram", 10, 101}, {"Raj", 11, 102}};
/* partial initialization */
struct student arr3[2] = {{"Jack", 10, 107}, {"Rose"}};
struct student arr4[2];
/* initializing array arr4 */
strcpy(arr4[0].name, "Mike");
arr4[0].age = 10;
arr4[0].rollno = 105;
strcpy(arr4[1].name, "Tyson");
arr4[1].age = 11;
arr4[1].rollno = 106;
/* printing the contents of arr1 */
printf("Contents of arr1:(uninitialized global variable)\n");
printDetails(arr1);
/* printing the contents of arr2 */
printf("Contents of arr2:\n");
printDetails(arr2);
/* printing the contents of partially initialized array arr3 */
printf("Contents of arr3:(arr3[1] - partially initialized)\n");
printDetails(arr3);
arr3[1].age = 10;
arr3[1].rollno = 108;
/* printing the contents of the array after above updation */
printf("printing the contents of arr3 after updation:\n");
printDetails(arr3);
/* printing the contents of arr4 */
printf("Contents of arr4:\n");
printDetails(arr4);
return 0;
}
Output:
jp@jp-VirtualBox:~/$ ./a.out
Contents of arr1:(uninitialized global variable)
Name:
Age: 0 Rollno: 0
Name:
Age: 0 Rollno: 0
Contents of arr2:
Name: Ram
Age: 10 Rollno: 101
Name: Raj
Age: 11 Rollno: 102
Contents of arr3:(arr3[1] - partially initialized)
Name: Jack
Age: 10 Rollno: 107
Name: Rose
Age: 0 Rollno: 0
printing the contents of arr3 after updation:
Name: Jack
Age: 10 Rollno: 107
Name: Rose
Age: 10 Rollno: 108
Contents of arr4:
Name: Mike
Age: 10 Rollno: 105
Name: Tyson
Age: 11 Rollno: 106
Contents of arr1:(uninitialized global variable)
Name:
Age: 0 Rollno: 0
Name:
Age: 0 Rollno: 0
Contents of arr2:
Name: Ram
Age: 10 Rollno: 101
Name: Raj
Age: 11 Rollno: 102
Contents of arr3:(arr3[1] - partially initialized)
Name: Jack
Age: 10 Rollno: 107
Name: Rose
Age: 0 Rollno: 0
printing the contents of arr3 after updation:
Name: Jack
Age: 10 Rollno: 107
Name: Rose
Age: 10 Rollno: 108
Contents of arr4:
Name: Mike
Age: 10 Rollno: 105
Name: Tyson
Age: 11 Rollno: 106
Array of structures
Reviewed by Mursal Zheker
on
Selasa, Januari 07, 2014
Rating:
Tidak ada komentar: