There are sort of two related questions here:
A) How is enum implemented? For example, if I have the code:
enum myType { TYPE_1, TYPE_2 }; >
pass built-in simple types (char, short, int, enum, float, pointers) by value
enums are implemented as integers, you can even explicitly specifiy values for them.