" " , union. " " , .
struct ExamStruct { long L; int K[2]; char C[4]; } STR; | union ExamUnion { long L; int K[2]; char C[4]; } UNI; |
sizeof(ExamStruct) = 12 | sizeof(ExamUnion) = 4 |
: L, K[2], C[4] | L, K[2], C[4] . |
, , . . , , . , , UNI .
( ), UNI.C[1] L .
, . define, . define STAFF struct sStaffType. , .
#define STAFF struct sStaffType
STAFF { // -
int iYearsOfService; // ()
float fHourlyWage; //
};
# define STUDENT struct sStudentType
STUDENT{
float fGradePtAverage; //
int iLevel; //
};
# define PROFESSOR struct sProfType
PROFESSOR {
int iDepartmentNumber; //
float fAnnualSalary; //
};
# define NODE_TYPE enum eNodeType
typedef NODE_TYPE {student, professor, staff};
# define TREE struct sTree
TREE {
char sLastName[15]; //
char sFirstName[15]; //
int iAge; //
TREE *Left, *Right; // ()
NODE_TYPE tag; // -
union {
STUDENT student;
PROFESSOR professor;
STAFF staff;
} uNodeTag; // ,
}; //
|
|
, TREE, uNodeTag, STUDENT, PROFESSOR, STAFF. , TREE , , , , . , - , . , uNodeTag tag. , , , , , , . ( tag, , , , ..) TREE , , .
uNodeTag TREE:
union {
STUDENT student;
PROFESSOR professor;
STAFF staff;
} uNodeTag;
uNodeTag TREE, TREE. TREE . , uNodeTag. Windows.
, .
:
1. , ;
2. ( ) m0 1, , m , ; 1, , m .
, , .
a) b)
) (A (B (H) (J)) (C (D) (E(G)) (F)))
d)
. 7.2 : ) ; b) ; c) ; d) .
. . , , .
. - , , . , 0, 1,.2 ( ); .
|
|
, , , y=3ln(x+1) a/x2 :
. -. : ; ; . y=3ln(x+1) a/x2 .
. , . : ; ; .
. , , - . : ; ; ;