结构体

什么是结构体

结构体是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;

java 共用体_结构体与共用体相关推荐

  1. java 链表放置结构体_结构体和它在链表中的使用

    一.结构体 由不同类型的数据组合成一个整体,以便引用,这些组合在一个整体中的数据是互相联系的. 1.1如何声明结构体呢? struct 结构体名  //结构体名字用作结构体类型的标志 {成员列表}; ...

  2. C++_结构体指针_嵌套结构体_结构体做为函数参数_结构体值传递和指针传递---C++语言工作笔记026

    然后我们来看结构体指针. 可以看到我们先去定义一个结构体 然后我们在main函数中,去声明一个结构体 s 然后我们定义一个指针 int *p = &s; 指向这个结构体变量. 这里要注意

  3. java 消息签名_微信公众平台消息体签名及加解密实例(Java)

    前言: 最近在研究微信公众平台的开发,玩得不亦乐乎.基本的回复功能已经实现了,而且回复用到了图灵机器人的接口.其实图灵机器人已经有微信接口可以直接调用.如果项目的需要,想要做个性化需求的话,用这种方式 ...

  4. unity 根据模型生成碰撞体_快速准确立体碰撞体自动生成器Unity游戏素材资源

    本游戏资料是快速准确立体碰撞体自动生成器Unity游戏素材资源,大小:5 MB ,格式:unitypackage,使用软件:unity5.6.4或更高,资产版本:Version 1.1(current ...

  5. _C语言_结构体_vistodio_c报错.+初学者的自闭瞬间。哎。

    在C语言中一直用不好子函数, 前几天看书+视频教学终于弄懂了, 想着用大一上做到的课设重新打一遍 工资纳税系统(不能说是系统就是一个控制台窗口连程序都算不上哈哈哈但是当时做出来的时候真的就是蛮高兴地) ...

  6. Java中如何实现结构体?如何对结构体进行排序?

    ***今天在做老师布置的编程题时,遇到了本题.感觉这道题如果用C++来解决的话,用结构体比较好吧!哈哈哈,可能还有其他的好方法,但我目前想到的是用结构体来解决比较合理.Java中有结构体吗?如果有,它 ...

  7. malloc 结构体_算法与数据结构——结构体变量

    首先,要学习数据结构,一般要先了解结构体变量的使用,那么该如何定义结构体变量呢?随我一起回忆一下吧.(不一样的音乐,不一样的体验)(1)直接定义结构体变量.struct {int a;        ...

  8. php 结构体_【开发规范】PHP编码开发规范下篇:PSR-2编码风格规范

    之前的一篇文章是对PSR-1的基本介绍 接下来是PSR-2 编码风格规范,它是 PSR-1 基本代码规范的继承与扩展. PSR-1 和PSR-2是PHP开发中基本的编码规范,大家其实都可以参考学习下, ...

  9. abaqus生成adams柔性体_基于ADAMS 的大型反铲挖泥机加装破碎锤 结构动力学分析

    刘 斌 徐沪萍 王 磊 武汉理工大学物流工程学院 武汉 430063 摘 要:以配备液压破碎锤的反铲挖泥船反铲挖泥机为研究对象,简单介绍加装液压破碎锤方案,然后运用动力学理论和相关的动态仿真软件,通过 ...

最新文章

  1. OpenCV中的快速特征检测——FAST(Features from Accelerated Segment Test)
  2. js计算前三个月的时间精确到时分秒
  3. [Angular Tutorial] 11 -Custom Filters
  4. pymongo连接mongodb的replset
  5. DNS服务器分离解析 RAID阵列 进程管理 日志管理 systemd作用
  6. NLP:自然语言处理技术近十年发展技术更迭的简介、案例之详细攻略(持续更新)
  7. C#中获取指定目录下所有目录的名称、全路径和创建日期
  8. 2.sort 排序命令讲解
  9. python实现链表的删除_Python垃圾回收机制
  10. 计算机大作业visio选题,大作业一 用Visio绘网络结构图
  11. zookeeper之学习(三)zkcli补充
  12. Libliner 中的-s 参数选择:primal 和dual
  13. 背包九讲-第三讲 多重背包
  14. 千万不要花费时间和金钱学习火山软件开发平台 - 递归软件绝非易语言的延续!
  15. 入门OJ:photo
  16. python opencv 将白色底变成透明底
  17. c#读蓝牙数据_c# – 将蓝牙设备连接到具有32feet .NET蓝牙库的计算机
  18. 印度BIS认证产品范围和注意事项
  19. EastWave应用案例:机箱屏蔽效能仿真
  20. 苹果手机10秒解除锁屏_忘记苹果锁屏密码10秒解决 音量键选择wipedata/

热门文章

  1. 《MATLAB SYNTAX》第5章 数值计算
  2. CenterPoint论文和代码解析
  3. 2021招商银行FinTech训练营总结
  4. 网络爬虫信息提取的常识和Robots协议
  5. android one miui,Xiaomi deletes Twitter poll after users choose Android One over MIUI
  6. 优思学院:考取六西格玛绿带认证有什么意义?
  7. 绝地求生服务器维护6.17,绝地求生6月17日维护到几点 绝地求生6月17日更新维护时间详情...
  8. 【电源】DC-DC电路中的伏秒平衡原理
  9. 中国数据库崛起,阿里云李飞飞:中国云数据库多种主流技术创新已领先国外
  10. QT-自动在线翻译工具,适用于国际化多语言应用