C语言-结构体

1.共用体:
union //联合--共用体 

早期的时候,计算机的硬件资源有限,
能不能让多个成员变量 公用同一块空间 


//使用方式 类似 结构体  --- 也是构造类型 

struct 结构体名
{
  成员变量名
};


union 共用体名
{
  成员变量名
}; //表示构造了一个共用体类型 


//定义变量
//定义指针 
//定义数组 
//做函数形参 
//做函数返回值类型 


注意:
  1.共用体类型的大小 = 最大的成员的大小
  2.共用体初始化,只能写一个值,这个值是给第一个成员变量的值 
  3.共用体成员的访问方式 和 结构体一样
  4.共用体因为公用同一块空间
    赋值时,后赋值的会影响前面赋值的结果
  5.用途 
    a.节省空间 
    
    校园人员管理系统 
    struct student 
    {
       char name[20];
       int sno;
       float score;
    };
    
    struct teacher 
    {
       char name[20];
       int  tno;
       float salary;
    };
    
    
    struct member
    {
       char name[20];
       int  no;
       union 
       { 
          float salary;
          float score;
       }data;
    };
    
    struct member s;
    printf("score = %f\n",s.data.score);
    struct member t;
    printf("score = %f\n",s.data.salary);
    
    b.数据转换 
    192.168.0.59 //ip地址 --- 网络环境中 ---实际对应是一个32位的数值 
    
    
    #include <stdio.h>
    union Ip
    {
        unsigned char ip[4];
        unsigned int iip;
    };

    int main(int argc, const char *argv[])
    {
        union Ip d = {192,168,0,59};
        
        printf("ip = %#x\n",d.iip);
        
        return 0;
    }

判断大小端

2.枚举

枚举 --- 将变量的可能值(常量值) 一一列举出来 
         将有关联的常量值,一一列举出来,组合成一个枚举类型 
         
enum 枚举名
{
   枚举值   
   //sun,mon,tue,wed,thu,fri,sat
};  
 //构造了一个枚举类型 
 
注意:
  1.枚举类型 本质是 用int型数据表示的 
    枚举类型 设计的不严谨的地方 

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

枚举 --- 提高代码可读性 

 3.

typedef //type define 
     表示给已有类型起别名 
     
     
struct stu
{
};

struct stu s;

union demo
{
};
union demo d;

typedef struct stu s;  //s是struct stu 这个类型的别名 

s s1; //定义了一个 struct stu的变量 

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

void (*signal(int signum, void (*handler)(int) ))(int) ;


typedef int array_t[4];  //一维数组

array_t b[3]; //array_t => int[4]

4.

位运算:
  指的是二进制位上的运算 

用途:
  嵌入式 --- 位运算 非常普遍 
  操作硬件 
  
c语言位运算:
  &    与 
  |    或 
  ^    异或
  ~    取反  
  <<   左移 
  >>   右移
  
  
  & 与 
    运算规则: 一假则假 
  | 或
    运算规则: 一真则真  
  ^ 异或
    运算规则: 相同为0 不同为1  
  << 左移  a<<n 
    运算规则: 将 左操作数a 左移 n位 
    左移一位 相当于 结果乘以2
       右移:
    要看 要移动的数据的类型 
    看是有符号  --- 最高位补符号位   //算术右移  
        无符号     --- 最高位补0        //逻辑右移 
        

 

   
  
  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15672.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多头自注意力中的多头作用及相关思考

文章目录 1. num_heads2. pytorch源码演算 1. num_heads 将矩阵的最后一维度进行按照num_heads的方式进行切割矩阵&#xff0c;具体表示如下&#xff1a; 2. pytorch源码演算 pytorch 代码 import torch import torch.nn as nn import torch.nn.functional as Ftorch.set…

数据仓库和商务智能:洞察数据,驱动决策

在数据管理的众多领域中&#xff0c;数据仓库和商务智能&#xff08;BI&#xff09;是将数据转化为洞察力、支持决策制定的关键环节。它们通过整合、存储和分析数据&#xff0c;帮助组织更好地理解业务运营&#xff0c;预测市场趋势&#xff0c;从而制定出更明智的战略。今天&a…

C++ ——从C到C++

1、C的学习方法 &#xff08;1&#xff09;C知识点概念内容比较多&#xff0c;需要反复复习 &#xff08;2&#xff09;偏理论&#xff0c;有的内容不理解&#xff0c;可以先背下来&#xff0c;后续可能会理解更深 &#xff08;3&#xff09;学好编程要多练习&#xff0c;简…

半导体制造工艺讲解

目录 一、半导体制造工艺的概述 二、单晶硅片的制造 1.单晶硅的制造 2.晶棒的切割、研磨 3.晶棒的切片、倒角和打磨 4.晶圆的检测和清洗 三、晶圆制造 1.氧化与涂胶 2.光刻与显影 3.刻蚀与脱胶 4.掺杂与退火 5.薄膜沉积、金属化和晶圆减薄 6.MOSFET在晶圆表面的形…

Avnet RFSoC基于maltab得5G 毫米波 开发工具箱

使用 MATLAB 连接到 AMD Zynq™ RFSoC 评估板。使用 RF 附加卡执行 OTA 测试。使用 HDL Coder 部署算法 版本要求&#xff1a; 大于 2023b 需要以下支持包之一&#xff1a; 适用于 Xilinx 基于 Zynq 的无线电&#xff08;R2023b 及更早版本&#xff09;的通信工具箱支持包适…

第三节 docker基础之---Commit+Dockerfile制作

docker目前镜像的制作两种方法&#xff1a; 1&#xff0c;基于docker Commit制作镜像 2&#xff0c;基于dockerfile制作镜像&#xff0c;Dockerfile 为主流的制作方式 如果不制作镜像删除容器之后则里面配置的文件也随之删除&#xff1a; [rootdocker ~]# docker images 查看…

推荐一个免费的、开源的大数据工程学习教程

在当今信息爆炸的时代&#xff0c;每一个企业都会产生大量的数据&#xff0c;而大数据也已经成为很多企业发展的重要驱动力&#xff0c;然而如何有效得处理和分析这些海量的数据&#xff0c;却是一个非常有挑战的技术。 今天推荐一个免费的数据工程教程&#xff0c;带你系统化…

【文档智能多模态】英伟达ECLAIR-端到端的文档布局提取,并集成阅读顺序方法

笔者在前期一个系列分享了各种文档智能相关的技术方法&#xff0c;可以参考《文档智能系列栏目》&#xff0c;涵盖各种常见方法。 下面直接看看这个端到端的文档智能结构化方法&#xff0c;供参考。 方法 一、架构 ECLAIR 采用了一个较大的视觉编码器&#xff08;657M 参数…

解锁Netty:Channel更替与HashMap管理的奇妙联动

个人CSDN博客主页&#xff1a; java之路-CSDN博客 ( 期待您的关注 ) 目录 Netty 的 Channel 机制探秘 HashMap 在 Netty 中的角色 创建新 Channel 时的操作步骤 新 Channel 的创建流程 确定老 Channel 的标识 移除老 Channel 的具体方法 从 HashMap 中移除 关闭和回收老…

小白零基础如何搭建CNN

1.卷积层 在PyTorch中针对卷积操作的对象和使用的场景不同&#xff0c;如有1维卷积、2维卷积、 3维卷积与转置卷积&#xff08;可以简单理解为卷积操作的逆操作&#xff09;&#xff0c;但它们的使用方法比较相似&#xff0c;都可以从torch.nn模块中调用&#xff0c;需要调用的…

12.翻转、对称二叉树,二叉树的深度

反转二叉树 递归写法 很简单 class Solution { public:TreeNode* invertTree(TreeNode* root) {if(rootnullptr)return root;TreeNode* tmp;tmproot->left;root->leftroot->right;root->righttmp;invertTree(root->left);invertTree(root->right);return …

算法之 博弈问题

文章目录 巴什博弈292.Nim 游戏 尼姆博弈斐波那契博弈其他博弈1025.除数博弈 博弈问题&#xff0c;就是双方之间的PK,关注的重点是 谁先&#xff1f;以及A,B各自赢的条件 一般有数学问题&#xff0c;动态规划&#xff0c;搜索进行求解 巴什博弈 下面的这题Nim 游戏&#xff0c;…

Linux 安装 Ollama

1、下载地址 Download Ollama on Linux 2、有网络直接执行 curl -fsSL https://ollama.com/install.sh | sh 命令 3、下载慢的解决方法 1、curl -fsSL https://ollama.com/install.sh -o ollama_install.sh 2、sed -i s|https://ollama.com/download/ollama-linux|https://…

DDR原理详解

DDR原理详解 存储器主要分为只读存储器 ROM 和随机存取存储器 RAM两大类。 ROM&#xff1a;只读存储器 ROM 所存数据&#xff0c;一般是装入整机前事先写好的,整机工作过程中只能读出&#xff0c;ROM所存数据稳定&#xff0c;断电后所存数据也不会改变。 RAM&#xff1a;随机…

推荐一款 免费的SSL,自动续期

支持自动续期 、泛域名 、可视化所有证书时效性 、可配置CDN 的一款工具。免费5个泛域名和1个自动更新。 链接 支持&#xff1a;nginx、通配符证书、七牛云、腾讯云、阿里云、CDN、OSS、LB&#xff08;负载均衡&#xff09; 执行自动部署脚本 提示系统过缺少crontab 安装cro…

手写一个C++ Android Binder服务及源码分析

手写一个C Android Binder服务及源码分析 前言一、 基于C语言编写Android Binder跨进程通信Demo总结及改进二、C语言编写自己的Binder服务Demo1. binder服务demo功能介绍2. binder服务demo代码结构图3. binder服务demo代码实现3.1 IHelloService.h代码实现3.2 BnHelloService.c…

将 AMD Zynq™ RFSoC 扩展到毫米波领域

目录 将 AMD Zynq™ RFSoC 扩展到毫米波领域Avnet XRF RFSoC 系统级模块适用于 MATLAB 的 Avnet RFSoC Explorer 工具箱5G mmWave PAAM 开发平台突破性的宽带毫米波波束成形特征&#xff1a;OTBF103 Mathworks Simulink 模型优化毫米波应用中的射频信号路径 用于宽带毫米波上/下…

征程 6 相比征程 5 对算子支持扩展的具体案例讲解

引言 征程 6 相比于征程 5&#xff0c;在整体架构上得到了升级&#xff0c;相对应的&#xff0c;算法工具链的算子支持也得到了扩充&#xff0c;无论是算子支持的数量&#xff0c;还是 BPU 约束条件&#xff0c;征程 6 都有明显的加强&#xff0c;这就使得过去在征程 5 上无法…

蓝桥杯C语言组:博弈问题

概述 在编程的世界里&#xff0c;博弈问题就像是一场智力的“斗地主”&#xff0c;双方&#xff08;或者多方&#xff09;使出浑身解数&#xff0c;只为赢得最后的胜利。而蓝桥杯C语言比赛中的博弈问题&#xff0c;更是让无数参赛者又爱又恨的存在。它们就像是隐藏在代码森林中…

BS架构(笔记整理)

楔子.基本概念 1.在网络架构中&#xff1a; 服务器通常是集中式计算资源&#xff0c;负责处理和存储数据&#xff1b;客户机是请求这些服务的终端设备&#xff0c;可能是个人电脑或移动设备&#xff1b;浏览器则是客户机上用来与服务器交互的工具&#xff0c;负责展示网页内容…