c/c++ 枚举、结构体、共同体

1、枚举

enum 枚举名 {枚举元素1,枚举元素2,……};
#include <stdio.h>

//枚举day
enum day
{
	Mon=1, //1
	Tue,   //2
	Wed,   //3
	Thur,  //4
 	Fri,   //5
	Sat,   //6
	Sun    //7
}day;

//枚举color
enum color
{
	Red=0,  //0
	Green,  //1
	Blue=4, //4
	Orange, //5
	Yellow, //6
};

int main()
{
    
    enum color c;
	printf("请输入颜色:\r\n");
	scanf("%d",&c);
	switch(c)
	{
		case Red:   printf("Red\r\n");break;
		case Green: printf("Green\r\n");break;
		case Blue:  printf("Blue\r\n");break;
		case Orange:printf("Orange\r\n");break;
		case Yellow:printf("Yellow\r\n");break;
		default:printf("404 not found\r\n");break;
	}

    //枚举有序,可进行遍历,无序则不可遍历
	for(day=Mon;day<=Sun;day++)
	{
		printf("星期%d\r\n",day);
	}
	
    //枚举无序,输出的数据有错误!
	for(c=Red;c<=Yellow;c++)
	{
		printf("颜色%d\r\n",c);
	}
}

运行结果如下:

请输入颜色:
5
Orange
枚举有序遍历
星期1
星期2
星期3
星期4
星期5
星期6
星期7
枚举无序遍历
颜色0
颜色1
颜色2
颜色3
颜色4
颜色5
颜色6

不难看出当枚举有序的时候,遍历出来的数据是和原本的枚举数据是一致的;枚举无序时会在默认值开始累加,然后当下一个值被赋值时,数据又从被赋值的那个值重新开始累加,以此类推。

 

2、结构体

struct 结构体标签
{

     变量定义1

     变量定义2

     变量定义3

} 结构变量;
#include <stdio.h>


struct sample
{
	int id;
	float hrm;
	
}test={123,321.123};

typedef struct Message
{
	int decive_id;
	int avg;
	float accel[3];
	float gryo[3];
	float mag[3];
};

int main()
{
	struct Message a;
	a.decive_id=12;
	a.avg=76;
	printf("结构体Message字节占:%d\r\n",sizeof(a));
	printf("decive_id:%d\r\n",a.decive_id);
	printf("avg:%d\r\n",a.avg);
	
	printf("结构体sample字节占:%d\r\n",sizeof(test));	
	printf("%d,%.3f",test.id,test.hrm);
	
	
}

运行结果如下:

结构体Message字节占:44
decive_id:12
avg:76
结构体sample字节占:8
123,321.123

3、共同体

共用体允许在相同的内存位置存储不同的数据类型,定义一个带有多成员的共用体,但是在任何时候只能有一个成员是带值的;

共用体提供了一种使用相同的内存位置的有效方式。

union 共用体名称
{

    变量定义1;

    变量定义2;

    变量定义3;

} 共用体变量;
#include <stdio.h>
#include <string.h>
union Message
{
	int a;
	float b;
	char c[16];
};

union data
{
	int i;
	float j;
	char k[4];
};

void main()
{
	union data one;
	union Message two;
	printf("one sizeof:%d\r\n",sizeof(one));    
	printf("two sizeof:%d\r\n",sizeof(two));
}

运行结果如下:

one sizeof:4
two sizeof:16

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值