首页 > 系统相关 >自学Linux第十六天:结构体 、 共用体 枚举 位运算

自学Linux第十六天:结构体 、 共用体 枚举 位运算

时间:2024-08-12 22:25:04浏览次数:19  
标签:第十六 变量 成员 struct 枚举 Linux 对齐 字节 结构

结构体 、 共用体 枚举 位运算


结构体
结果体类型——用来描述复杂数据的一种数据类型
构造类型 用户自定义类型

结构体
描述一个结构体

语法:
struct:结构体类型名
{
成员列表
}


struct 关键字
    表示是在构造一个结构体的类型
结构体名
    用来描述结构体这个类型的一个名称
成员列表
    表示要描述的复杂数据 中用到的 具体成员变量
    定义方式与之前的变量的方式相同
    多个成员之间用分号隔开
最后有一个分号表示结束


eg:
struct student
{
    char name[30];
    int sno;
    float score
    char sex;
};//表示定义出一个数据类型


可以定义一个变量
定义指针变量
定义数组

注意“
1.结构体类型的使用过程
    a先定义出类型
    b定义变量
2定义变量
    struct 结构体名 变量名;
    结构体类型 :int
    
    结构体初始化
    struct student s = {};
初始化
    看每个成员变量 具体是什么数据类型
    根据各个成员变量 自身的数据类型 进行初始化
    初始化的顺序 按照定义的顺序 依次初始化
    
结构体变量的引用:
    结构体数据引用时 一般是引用的具体的成员数据
    引用的成员
    .成员运算符 “的”
    
使用:
    结构体变量名.成员名  printf("%d",s.sno);
    
    
    ->  指向结构体成员运算符
        结构体指针->  成员名
        结构体变量名.成员名
        
结构体类型的定义形式
形式1 先定义类型,然后定义变量
struct demo
{

};
struct demo d;
形式2 定义类型的同时 定义变量
struct demo
{

}d;
形式3 定义类型的同时 定义变量 可以省略结构体名
struct 
{

}d;只能用一次

结构体类型的大小:
内存对齐          
结构体对齐规则
结构体的对齐:
结构体的对齐规则: //内存地址的对齐
1.在32位的平台上,默认都是按4字节对齐的。 
2.对于成员变量,
   各自在自己的自然边界上对齐。
   char  -- 1字节 
   short -- 2字节 
   int   -- 4字节 
3.如果 成员变量中有比4字节大。      
  此时 整个结构体 按照4字节对齐。 //32位的平台 
4.如果 成员变量中没有有比4字节大。  
  此时 整个结构体 按照最大的那个成员对齐。   
  //32位的平台   
  //如果有超过4字节 ,按照4字节对齐
  //如果没有超过4字节的,则按成员变量中最大对齐 
 ----------------------------------------------
  //64位的平台
  //如果超过4字节的,按超过的最大的成员变量对齐 
  //如果没有超过4字节的,则按成员变量中最大对齐
-----------------------------------------------

同类型的结构体变量之间 ,可以相互赋值 
struct student s1;
struct student s2;
s2 = s1; 

标签:第十六,变量,成员,struct,枚举,Linux,对齐,字节,结构
From: https://blog.csdn.net/2302_78620228/article/details/141143176

相关文章

  • 自学linux第十五天:二维数组的指针
    二位字符型数组:chars[][10]={"hello","world","china"};1.定义指针:char(*p)[10]=s;这样定义表示为  p指向二维数组s                 *(*(p+i)+j) 表示二维数组中的s[i][j]元素chars[10]="hello";//存放字符串数据s的......
  • Linux系统中的管道命令、grep命令、sed命令和awk命令
    本章将和大家分享Linux系统中的管道命令、grep命令、sed命令和awk命令。废话不多说,下面我们直接进入主题。一、管道命令Linux中的管道命令(pipe)是一种非常强大的特性,它允许你将一个命令的输出作为另一个命令的输入。管道命令极大地增强了命令行的灵活性和功能,使得复杂的数据处理......
  • Linux进程和计划任务管理
    目录一、进程基本概念1.进程2.程序和进程的关系 二、查看进程信息1.ps命令1.1 psaux命令1.2ps-elf命令 2.top命令 3.pgrep命令 4.jobs命令 三、查看进程树 四、进程的启动方式1.手动启动2.调度启动五、终止进程的运行1.Ctrl+C组合键2.kill......
  • Linux Centos通过mail向QQ邮箱发邮件
    1.配置1.1如果是配置全局文件,则编辑/etc/mail.rc1.2如果是配置当前用户,则编辑~/.mailrc2.配置文件内容#这里填入smtp地址,这里的xxx为qq或者163等,如果用的云服务器,安全组策略要开放465/25端口,入站和出站都要开放该端口setsmtp=smtp.qq.com:587#设置发信人邮箱和昵称(......
  • 一口气介绍25个Linux的基础指令
    ......
  • 10 - Linux系统安全及应用
    目录一、账号安全控制1.系统账号清理2.密码安全控制3.命令历史限制4.终端自动注销二、用户切换和用户提权1.su命令-切换用户1.1su命令的用途及用法1.2 限制使用su命令的用户1.3 查看su操作记录2.sudo命令-用户提权2.1sudo命令的用途及用法2.2配......
  • 【Linux系列】内核参数
    sysctl命令常用参数RAID性能参数调优网络协议栈调整:单位是字节TCP并发性能优化对于用不上IPV6的建议直接禁用TCPkeepalive时长控制memoryOOM控制安全防护模块保障TCP通信质量IO密集性服务器优化参数路由器选项控制路由机制控制内存大页面使用策略内核参数主要......
  • Linux防火墙基础Firewalld
     简介    Firewalld是一个用于CentOS、Fedora和RedHatEnterpriseLinux(RHEL)等系统的动态防火墙管理工具。它是iptables的前端工具,可以帮助用户配置和管理Linux系统上的防火墙规则。    Firewalld防火墙是一种简单的、有状态的、基于区域(zone)的防火墙。......
  • 重头开始嵌入式第十八天(Linux系统编程 文件IO)
    Linux系统编程内容Linux系统编程涵盖了众多方面的知识和技术: 1. 文件I/O操作:包括打开、读取、写入、关闭文件,以及处理文件的权限、属性等。2. 进程管理:创建新进程、进程的终止、等待进程结束、进程的执行状态控制等。3. 信号处理:接收和处理系统发送的各种信号,以响......
  • 【嵌入式linux开发】旭日x3派部署自己训练的yolov5模型(安全帽识别、视频流推理、yolov
    旭日x3派部署自己训练的模型(安全帽识别、视频流推理、yolov5-6.2)windows,框架pytorch,python3.7效果模型训练模型转换1、pt模型文件转onnx2、检查onnx模型3、准备校准数据4、onnx转bin上板视频流推理1、图片推理2、视频流推理效果模型训练进官网可克隆yolov5......