java 共用体_结构体与共用体

pond-3790066_640.jpg

结构体

什么是结构体

结构体是C语言中的一种数据类型,它有如下特点

结构体是一种构造数据类型

把不同类型的数据组合成一个整体来自定义数据类型

结构体的定义方式与结构体变量的声明

//有名结构体

struct Student{

int num;

char name[30];

} s1;

//匿名结构体

struct Staff{

char name[30];

int sllary;

};

//使用define

#define ds struct DefineStruct

ds{

int i;

};

//使用typedef

typedef struct date{

int year;

int month;

int day;

} Date;

结构体类型与结构体变量

结构体类型与结构体变量概念不同,相当于java中的类,和具体类的实例

类型:不分配内存;变量:分配内存

类型:不能赋值、存取、运算等操作,变量可以

结构体可嵌套,但防止递归嵌套

结构体成员名可与程序中变量名相同,不会造成混淆

结构体变量的初始化

//像创建类一样,先创建结构体,再声明具体实例变量

struct person

{

int num;

char name[20];

};

struct person pf={18,'pf'};

//有点类似于c#中类的初始化器的概念,主要是为了让代码更加简洁

struct animal{

int weight;

char name[20];

} lion={3,'xinba'};

//匿名类+初始化器的形式,再度简化了代码

struct {

int height;

char name[20];

} cat{2,"tom"};

结构体变量的引用

这个知识点比较重要,在2017年的真题当中就有涉及,总共有3种引用方式:

struct person

{

int num;

int height;

int age;

};

struct person pf={18,171,200},

*p=&pf;

pf.num=20;//结构体变量名.成员名

p->height=180;//结构体指针名->成员名

(*p).age=300;//(*结构体指针名).成员名

printf("num=%d,weight=%d,age=%d",pf.num,p->height,(*p).age);

共用体

共用体的定义:共用体也叫联合体,与结构体类似,也是一种构造数据类型,但却有着不同的行为方式。一般至少由一种数据类型构成,所有成员引用的是内存中相同的位置

定义方式如下,我的理解就是把一堆不一样的类型拼在一起,然后对于这个共用体可以放置成员内的所有类型,如例子中的int,char,float(不恰当的比方就是low一点的泛型)。然后存放变量的时候每次只能存放一种类型的,并且共用体union的内存大小取自成员中占用内存最大的那种类型。

union data{

int i;

char ch;

float f;

}a,b;

union data2{

int i;

char ch;

};

union data2 x,y,z,*p,d[3];

union{

int i;

char ch;

}u,v,w;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值