java switch里怎么使用枚举的值 switch枚举类_共用体和结构体可以相互嵌套


一、共用体

共用体和结构体有些类似,它们都有多个数据成员。不同的是,结构体的多个数据成员是各自独立分别存放的。

而共用体的多个数据成员却是保存在内存中的同一个位置,它们“共用”一段内存资源,所以被称为“共用体”。

同结构体变量一样,也可以通过“.”引用共用体的数据成员。

注意:共用体的各个数据成员共用同一内存资源,如果将共用体某一数据成员修改后,它所在的内存的值会发生变化,相应的这个共用体的其它数据成员也会发生变化。

二、枚举

C语言中的枚举类型,其实质是就是一个Int类型的数据。而所谓的枚举值,不过就是给一些位于某个范围内的整数值(由编译器给定或者程序员在代码中给定)一个容易记忆和使用的标识符(名字)。使用这个有意义的名字给变量赋值,在一定程度上可以提高代码的可读性。


enum  TraficLight
{
Green=1, //给定枚举值
Rea,
Yellow
};
Int main()
{
enum TraficLight  light;
Light = red;  //为枚举类型赋值
return 0;
}
枚举值通常表达的是某一个范围内的有限的可选值,且枚举值可以作为常量使用,所以往往使用枚举值来作为switch语句的分支条件,表达对某一范围内的不同情况的处理。
switch(light)
{
case red:  break;
case yellow:break;
case green:break;
}


枚举类型的意义在于提高程序代码的可读性。

举例:关于交通灯枚举编程题目


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
enum TraficLight {
 red, green, yellow
};
int main()
{
 enum TraficLight  light;
 srand(time(NULL));
 int num = rand()%3;
 light =(TraficLight)num;
 switch(light)
 {
  case red : printf("目前是红灯,禁止通行n");break;
  case green: printf("目前是绿灯,可以通行n");break;
  case yellow:printf("目前是黄灯,快速通行n");break;
 }
  return 0;
}


三、typedef

关于typedef,一个关于函数指针,一个关于结构体

关于函数指针


#include <stdio.h>
typedef int (*fun)(int i, int j) ;  //定义一个函数指针新类型fun,返回值为int,参数有2个整型参数
int add(int a, int b)
{ return a+b; } 
 int sub(int a, int b)
 {  return b-a; }
  int main()
 {  int a,b; fun  f1;
  printf("input a,b:n");
  scanf("%d%d",&a,&b);
   if(a>b) 
  {  f1=add;
   printf("%d+%d=%dn",a,b,f1(a,b));
  }
  else
  {   f1=sub;
   printf("%d-%d=%dn",b,a,f1(a,b));  
  }   
  return 0; }


关于结构体


#include <stdio.h>
typedef struct Student
{ int num;
 char name[20];
 float score;
} Stu;
int main()
{
 Stu s[3]={{1,"er",89},{2,"sd",67},{3,"we",86}},*p;
 int i;
 for(i=0;i<3;i++)
 {
  printf("学号:%dt姓名:%st分数:%fn",s[i].num,s[i].name,s[i].score);
 }
  for(p=s;p<s+3;p++)
  printf("学号:%dt姓名:%st分数:%fn",p->num,p->name,p->score);
 
  return 0;
}