当前位置: 首页 > news >正文

嵌入式开发学习日志Day17

第十一章  结构体与共用体

一、结构体

1、结构体

一般形式     【struct   标识符】

结构体中的标识符一般首字母大写;

【.】结构体成员运算符;  优先级 1 级    结合方向:从左至右;

【->】:指向结构体成员运算符;

eg:

#include<stdio.h>
struct Student 
{int id;char name[10];float score; 
};      //此处的分号不能省略;也可以在分号前定义变量,为全局变量;
int main(void)
{struct Student s;s.id = 1;       //为id进行赋值;strcpy(s.name,"zhnagsan");s.score = 99;struct Student s1;s1 = s;    //结构体的变量之间可以赋值printf( " %d  %s  %f\n",s.id,s.name,s.score);return 0;
}

结构体的作用:将不相关的东西打包封装在一起,方便使用;

注意:

        结构体不可以整体赋值,因为类型不匹配;

eg:结构体的初始化;

程序:

                  注意:初始化时,次序不能颠倒;

                               不写的时候,默认为0;(称为结构体的部分初始化);

 2、结构体在内存中所占的字节数

2.1 内存对齐

        将变量按照4的整数倍进行存放,用空间换取时间,提高CPU的运行效率;

2.2结构体对齐原则

 1、默认按照计算机位数对齐;64位电脑中   64 / 8 = 8,最终的大小必须为8的倍数;

2、从结构体的成员中查找最大字节的成员,最终以此成员大小对齐;

3、把所有的成员按照声明依次存放入内存,偏移量  /  sizeof(成员),必须整除;

 练习:

eg:(1)将结构体中的元素逆序输出:

                用swap函数并调用; 

 (2)对结构体里面的元素进行排序:(分别用成绩,名字进行排序)

程序:

二、共用体

        所有的成员公用相同的内存空间;4个字节;

定义:

注意:

         在公共体中成员进行访问时,仅最后一位赋值是有效的;

        总是从空间的起始位置进行共享的;

        所有成员的首地址相同;

eg:判断电脑是大端存储还是小端存储:

三 、枚举类型

定义:如果一个变量只有几种可能的值,则可以定义为枚举类型。所谓“枚举”是指将变量的值-一列举出来,变量的值只限于列举出来的值的范围内。

        和整型兼容的数据类型;

 四、用typedef定义类型

给已有的数据类型,取一个别名;

int INT;            //定义一个变量;
typedef int INT;    //给int型取别名为INT;

第12章 位运算

一、位运算

位运算必须是整型或者与整型相兼容的数据类型,(枚举类型可以)

        按位与“&”:指定位清零;

        安慰或“|”:指定位变一;

        按位异或“^”:指定为翻转,其他位不变;

        按位取反“~”(单目运算符):按位取反:

        左移“<<”:eg:p <<1————p向左移一位,最高位丢失,最低位补零;

        左移“>>":eg:p >>1————p向右移一位,最低位丢失,最高位补零;(注意右移时是否有符号);有符号右移为算数右移,无符号右移为逻辑右移;

 eg:将p的第0位,第三位,第六位变为1;

程序:

相关文章:

  • 设计模式-策略模式(Strategy Pattern)
  • VBA -- 学习Day4
  • 华为银河麒麟 V10(ARM)系统软件部署全攻略:Redis、RabbitMQ、MySQL 等集群搭建指南
  • Elasticsearch太重?它的超轻量的替代品找到了!
  • 华为OceanStor 5500 V3存储证书过期问题处理
  • lambda 表达式
  • 在一台CentOS服务器上开启多个MySQL服务
  • 【高并发】Celery + Redis异步任务队列方案提高OCR任务时的并发
  • 代码随想录第40天:图论1
  • 1、mongodb-- BSON 学习和JSON性能对比
  • qml用PathView实现Cover Flow效果
  • Lightweight App Alternatives
  • 耀圣-气动带刮刀硬密封法兰球阀:攻克颗粒高粘度介质的自清洁 “利器”
  • c++中构造对象实例的两种方式及其返回值
  • 牛客练习赛138-题解
  • 机器人手臂的坐标变换:一步步计算齐次矩阵过程 [特殊字符]
  • 基于大模型预测的足月胎膜早破行阴道分娩全流程研究报告
  • 2025数维杯数学建模A题完整限量论文:空中芭蕾——蹦床运动的力学行为分析
  • 突破跨界传输瓶颈:Zynq OCM与DDR核间数据共享性能深度调优
  • Rust中记录日志:fast_log
  • 构建菌株有效降解有机污染物,上海交大科研成果登上《自然》
  • 古埃及展进入百天倒计时,闭幕前168小时不闭馆
  • 央行:下阶段将实施好适度宽松的货币政策
  • 暴雨及强对流天气黄色预警已发布!南方进入本轮降雨最强时段
  • “救护车”转运病人半路加价,从宝鸡到西安往返都要多收钱
  • 巴国家安全委员会授权军方自主决定对印反击措施