Structure and ENUM in C
Structure and ENUM in C
Structures are the user-defined data type, which allow us to collect the group of different data
types. Here, all the individual components or elements of structures are known as a member.
Example of Structure in C
You can understand the structure in C with the help of the example below:
{ int rollnumber;
char name[20];
Float percentage;
};
Here struct Student is keeping the information of a student which consists of three data fields,
roll number, name, and percentage. These fields are known as structure elements or members.
These elements can be of different data types. For example, here roll number is int type, the
name is char type, etc.
Or
struct struct_name {
DataType member1_name;
DataType member2_name;
DataType member3_name;
} var_name;
Var_name.member2_name;
For Example:
struct Employee
char name[20];
int age;
char department[15];
char gender;
};
In this above code, we have declared the variables separately. We can also declare the
variables within the definition of structure.
For Example:
struct Employee
char name[20];
int age;
char department[15];
char gender;
}E1, E2;
Detailed Example of Structure in C
#include <stdio.h>
* EmployeeData.
*/
struct EmployeeData{
char *emp_name;
int emp_id;
int emp_age;
};
int main()
employee.emp_name = “John”;
employee.emp_id = 1234;
employee.emp_age = 40;
return 0;
}
#include <stdio.h>
int main()
int i, sum = 0, *b = a + 4;
return 0;
#include <stdio.h>
int main(){
printf(“%f\n”, sum);
return 0;
The number of times the variable sum will be printed, when the above program is executed, is
_________________.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Enum in C
The enum in C is also known as the enumerated type. It is a user-defined data type
that consists of integer values, and it provides meaningful names to these values. The
use of enum in C makes the program easy to understand and maintain. The enum is
defined by using the enum keyword.
For example:
1. enum fruits{
2. mango=2,
3. apple=1,
4. strawberry=5,
5. papaya=7,
6. };
1. enum status{false,true};
In the above statement, we have declared the 's' variable of type status.
1. enum status{false,true} s;
In this case, the default value of false will be equal to 0, and the value of true will be
equal to 1.
In the above code, we create an enum type named as weekdays, and it contains the
name of all the seven days. We have assigned 1 value to the Sunday, and all other
names will be given a value as the previous value plus one.
Output
1. #include <stdio.h>
2. enum months{jan=1, feb, march, april, may, june, july, august, september, october, n
ovember, december};
3. int main()
4. {
5. // printing the values of months
6. for(int i=jan;i<=december;i++)
7. {
8. printf("%d, ",i);
9. }
10. return 0;
11. }
In the above code, we have created a type of enum named as months which consists
of all the names of months. We have assigned a '1' value, and all the other months
will be given a value as the previous one plus one. Inside the main() method, we have
defined a for loop in which we initialize the 'i' variable by jan, and this loop will
iterate till December.
Output
The enum is also used in a switch case statement in which we pass the enum variable
in a switch parenthesis. It ensures that the value of the case block should be defined
in an enum.
1. #include <stdio.h>
2. enum days{sunday=1, monday, tuesday, wednesday, thursday, friday, saturday};
3. int main()
4. {
5. enum days d;
6. d=monday;
7. switch(d)
8. {
9. case sunday:
10. printf("Today is sunday");
11. break;
12. case monday:
13. printf("Today is monday");
14. break;
15. case tuesday:
16. printf("Today is tuesday");
17. break;
18. case wednesday:
19. printf("Today is wednesday");
20. break;
21. case thursday:
22. printf("Today is thursday");
23. break;
24. case friday:
25. printf("Today is friday");
26. break;
27. case saturday:
28. printf("Today is saturday");
29. break;
30. }
31.
32. return 0;
33. }
Output
o The enum names available in an enum type can have the same value. Let's look at the
example.
1. #include <stdio.h>
2.
3. int main(void) {
4. enum fruits{mango = 1, strawberry=0, apple=1};
5. printf("The value of mango is %d", mango);
6. printf("\nThe value of apple is %d", apple);
7. return 0;
8. }
Output
o If we do not provide any value to the enum names, then the compiler will
automatically assign the default values to the enum names starting from 0.
o We can also provide the values to the enum name in any order, and the unassigned
names will get the default value as the previous one plus one.
o The values assigned to the enum names must be integral constant, i.e., it should not
be of other types such string, float, etc.
o All the enum names must be unique in their scope, i.e., if we define two enum having
same scope, then these two enums should have different enum names otherwise
compiler will throw an error.
1. #include <stdio.h>
2. enum status{success, fail};
3. enum boolen{fail,pass};
4. int main(void) {
5.
6. printf("The value of success is %d", success);
7. return 0;
8. }
Output
o In enumeration, we can define an enumerated data type without the name also.
1. #include <stdio.h>
2. enum {success, fail} status;
3. int main(void) {
4. status=success;
5. printf("The value of status is %d", status);
6. return 0;
7. }
Output
o Macro can also be used to define the name constants, but in case of an enum, all the
name constants can be grouped together in a single statement.
For example,
# define pass 0;
# define success 1;
The above two statements can be written in a single statement by using the enum
type.
enum status{pass, success};
o The enum type follows the scope rules while macro does not follow the scope rules.
o In Enum, if we do not assign the values to the enum names, then the compiler will
automatically assign the default value to the enum names. But, in the case of macro,
the values need to be explicitly assigned.
o The type of enum in C is an integer, but the type of macro can be of any type.