结构化
# include <iostream>
int main ( )
{ struct contact { char phone[ 20 ] ; char email[ 20 ] ; } ; struct person { char name[ 20 ] ; int gender; double h; double w; struct contact c; } ; struct person timmy = { "timmy" , 1 , 170.00 , 60.00 , { "13012345678" , "timmy@xxx.com" } } ; std:: cout << timmy. name << std:: endl; std:: cout << timmy. gender << std:: endl; std:: cout << timmy. h << std:: endl; std:: cout << timmy. w << std:: endl; std:: cout << timmy. c. phone << std:: endl; std:: cout << timmy. c. email << std:: endl; struct person * p = & timmy; std:: cout << p-> name << std:: endl; std:: cout << ( * p) . name << std:: endl; std:: cout << ( * p) . c. email << std:: endl; return 0 ;
}
联合与枚举
# include <iostream>
enum msgType { eInteger = 1 , eIFloat = 3 , eString = 5 ,
} ;
struct message { enum msgType type; union { int n; float f; char str; } u;
} ;
void printMsg ( struct message msg)
{ switch ( msg. type) { case eInteger: std:: cout << msg. u. n << std:: endl; break ; case eIFloat: std:: cout << msg. u. f << std:: endl; break ; case eString: std:: cout << msg. u. str << std:: endl; break ; }
} int main ( )
{ struct message msg[ 3 ] ; msg[ 0 ] . type = eInteger; msg[ 0 ] . u. n = 123 ; msg[ 1 ] . type = eIFloat; msg[ 1 ] . u. f = 3.14 ; msg[ 2 ] . type = eString; msg[ 2 ] . u. str = 'A' ; for ( int i= 0 ; i < 3 ; i++ ) { printMsg ( msg[ i] ) ; } return 0 ;
}