c语言基础笔记DAY7_结构体共用体枚举

c语言基础笔记DAY7_结构体共用体枚举

struct结构体

struct people
{
    char name[128];
    int age;
    int height;
}a,b;

struct people c = {"Mike",28,178};
struct people d = {.age = 20};		//给部分成员初始化
  • struct people是类型 , 没有申请内存空间 , 所以不能在定义时给成员变量赋值
  • d=c;是可以的. 相同类型的变量可以赋值

共用体(联合体)

  • 联合union是一个能在同一个存储空间存储不同类型数据的类型;

  • 联合体所占的内存长度等于其最长成员的长度倍数,也有叫做共用体;

  • 同一内存段可以用来存放几种不同类型的成员,但每一瞬时只有一种起作用;

  • 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员的值会被覆盖;

  • 共用体变量的地址和它的各成员的地址都是同一地址。

#include 

//共用体也叫联合体 
union Test
{
	unsigned char a;
	unsigned int b;
	unsigned short c;
};

int main()
{
	//定义共用体变量
	union Test tmp;

	//1、所有成员的首地址是一样的
	printf("%p, %p, %p\n", &(tmp.a), &(tmp.b), &(tmp.c));

	//2、共用体大小为最大成员类型的大小
	printf("%lu\n", sizeof(union Test));

	//3、一个成员赋值,会影响另外的成员
	//左边是高位,右边是低位
	//低位放低地址,高位放高地址
	tmp.b = 0x44332211;

	printf("%x\n", tmp.a); //11
	printf("%x\n", tmp.c); //2211

	tmp.a = 0x00;
	printf("short: %x\n", tmp.c); //2200
	printf("int: %x\n", tmp.b); //44332200

	return 0;
}

引申

大小端

小端: 低位存低地址内存

大端: 高位存低地址内存

  • 大型服务器与网络数据 大端
  • 小型的计算机 小端

枚举

  • 枚举:将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。
枚举类型定义:

enum 枚举名

{

​ 枚举值表

};

  • 在枚举值表中应列出所有可用值,也称为枚举元素。

  • 枚举值是常量,不能在程序中用赋值语句再对它赋值。

  • 举元素本身由系统定义了一个表示序号的数值从0开始顺序定义为0,1,2 …

#include 
enum weekday
{
​    sun = 2, mon, tue, wed, thu, fri, sat
} ;

enum bool
{
​    flase, true
};

int main()

{enum weekday a, b, c;
​    a = sun;
​    b = mon;
​    c = tue;*printf*("%d,%d,%d\n", a, b, c);enum bool flag;
​    flag = true;if (flag == 1){*printf*("flag为真\n");}return 0;
}

你可能感兴趣的:(C语言,笔记)