08:C语言结构体/共用体/宏定义/枚举/

1、结构体

  结构体是一个集合,集合中包含很多个元素,这些元素的数据类型可以相同,也可以不相同。所以结构体是一种数据封装的方法。结构体存在的意义就在于,把很多数据类型不相同的变量封装在一起,组成一个大的新的数据类型。

代码①:

#include <stdio.h>

//1、结构体定义是在主函数外面
//2.结构体定义的是新的组合类型,不是变量,也不消耗内存
struct Student
{
	char name[20];		//学生姓名
	unsigned int num;	//学生学号
	int isMale;			//性别
};						//逗号不能省略

int main(void)
{
	struct Student s1;		//s1是一个变量,类型是struct Student
	//给结构体变量赋值
	s1.name[0] = 'A';
	s1.name[1] = 'B';
	s1.name[2] = 'C';
	
	s1.num = 123;			//学号为123
	s1.isMale = 1;			//男生
	
	printf("%s,%d,%d\n",s1.name,s1.num,s1.isMale);
	return 0;
}

ABC,123,1

【注】
使用结构体的步骤:
第一步:定义结构体类型。结构体类型的定义是在函数外面(函数外面为全局)的
第二步:使用第一步定义的类型来定义结构体变量。
第三步:使用变量。实际上使用结构体变量的时候,使用的是结构体变量中封装的各个子元素,而不是结构体变量本身

【注】
若结构体里面的某个元素没有初始化,则值是随机的。

2、共用体(union)

#include <stdio.h>

//定义共用体类型
union MyUnion
{
	int a;
	char b;
	float c;
};

int main(void)
{
	union MyUnion u1;//定义变量
	u1.a = 129;
	printf("%d,%d,\n",u1.a,u1.b);
	return 0;
}

129,-127,

结构体,是对多个数据的组合与封装。
共用体,共用体中只有一个东西,只是它被好几个名字(和类型)共用。,如上面的例子,当129表现为int类型时,输出为129。当129表现为char类型时,通过十进制输出则为-127(char类型-127~128)

3、宏定义

  在C语言中,一般使用常数的时候,都不是直接使用,而是先把该常数定义为一个宏,然后在程序中使用该宏名。这样做的好处是,等我们需要修改这个常数时,只需要在宏定义处修改一次即可。而不用到代码中到处去寻找,看哪里都用过该常数

#include <stdio.h>

#define N (123)	//这里没有分号哦,相当于N == 123,后面的数字最好用()括起来

int main(void)
{
	int a = N;
	printf("%d\n",a);	
}

123

宏定义要注意的问题:
1、宏定义一般是在函数的外面
2、宏定义必须要先定义,再使用宏。如果先使用就会编译报错。
3、宏定义中宏名一般用大写。不是语法规定的,是一般约定俗成的。

4、枚举(enum)

#include <stdio.h>

//定义一个枚举类型,名字叫enum week
enum week
{
	SUN,
	MON,
	TUE,
	WEN,
	THU,
	FRI,
	SAT,
};

int main(void)
{
	enum week today;//使用枚举类型,定义一个变量today
	
	today = SUN;
	switch(today)
	{
		case SUN:
		printf("今天星期7\n");
		break;
		case MON:
		printf("今天星期1\n");
		break;
		case TUE:
		printf("今天星期2\n");
		break;
		case WEN:
		printf("今天星期3\n");
		break;
		case THU:
		printf("今天星期4\n");
		break;
		case FRI:
		printf("今天星期5\n");
		break;
		default:
		printf("今天星期6\n");
		break;
	}
}
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值