1、共用体
# include <stdio.h>
union data
{
int i;
char ch;
float f;
};
void main()
{
union data data1={65};
printf("%d\n",data1.i);
printf("%c\n",data1.ch);
printf("%f\n",data1.f);
}
一个练习
#include <stdio.h>
struct
{
int num;
char name[10];
char sex;
char job;
union
{
int banji;
char position[10];
}category;
}person[2];
void main()
{
int i;
for(i=0;i<2;i++)
{
scanf("%d %s %c %c", &person[i].num, &person[i].name,&person[i].sex, &person[i].job);
if(person[i].job == 'S')
scanf("%d", &person[i].category.banji);
else if(person[i].job == 'T')
scanf("%s", person[i].category.position);
else
printf("Input error!");
}
printf("\n");
printf("No. name sex job class/position\n");
for(i=0;i<2;i++)
{
if (person[i].job == 'S')
printf("%-6d%-10s%-3c%-3c%-6d\n",person[i].num, person[i].name, person[i].sex, person[i].job,person[i].category.banji);
else
printf("%-6d%-10s%-3c%-3c%-6s\n",person[i].num,
person[i].name,person[i].sex, person[i].job,
person[i].category.position);
}
}
2、枚举
没有枚举的情况
#include <stdio.h>
void main()
{
int day=7;
if(day==7)
printf("今天要休息!\n");
}
使用枚举的情况
#include <stdio.h>
enum weekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};
void main()
{
enum weekday day=Sunday;//enum weekday day=0;
if(day==Sunday)
printf("今天要休息!\n");
}
本质是整数
#include <stdio.h>
enum weekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};
void main()
{
enum weekday day=0;
if(day==Sunday)
printf("今天是%d\n",day);
}
也可以自行指定整数值
#include <stdio.h>
enum weekday{Sunday=7,Monday=1,Tuesday,Wednesday,Thursday,Friday,Saturday};
void main()
{
enum weekday day=Sunday;
if(day==Sunday)
printf("今天是%d\n",day);
}
或者
#include <stdio.h>
enum weekday{Sunday=7,Monday,Tuesday,Wednesday=0,Thursday,Friday=3,Saturday};
void main()
{
enum weekday day=Wednesday;
printf("今天是%d\n",day);
}
3、类型别名
例子1
#include <stdio.h>
typedef int INTEGER;
void main()
{
INTEGER i=1;
printf("i=%d\n",i);
}
例子2
#include <stdio.h>
typedef int NUM[2];
void main()
{
NUM num={1,2};
printf("%d\n",num[0]);
}
例子3
#include <stdio.h>
typedef struct
{
int day;
int month;
int year;
}DATE;
void main()
{
DATE date1={10,1,2000};
printf("%d\n",date1.day);
}
[此贴子已经被作者于2010-12-13 20:08:01编辑过]