C语言-------结构体(1)

数据类型
 (1)基本数据类型 
   整型 
   浮点型
   字符型 
 (2)构造类型
   数组
   结构体 
     
结构体:  用来处理,现实生活中,更复杂的数据的描述
         用来 描述复杂数据的 一种用户自定义的数据类型 

一.结构体类型 定义  --- 定义(从无到有) 声明()
struct 结构体名
{
    成员列表
};

(1).struct        表示这是一个结构体类型 
(2).结构体名  标识符 
(3).成员列表  这个结构类型中要描述的具体数据 ,一般都是变量定义的形式 

 struct student{int sno;char name[20];int age;float score;};

(此时表示 定义了一个 学生信息的结构体类型        数据类型 --- 用户自定义)

变量的初始化 和 赋值 
struct student   s = {110,"tom",18,98.5};

struct student s[3]={{110,"tom",12,98.2},{111,"jey",13,97.5},{112,"mik",10,99.5}};

引用结构体数据  一般我们是引用到结构体成员 (引用到这种基本类型)

int main(int argc, const char *argv[]){struct student s={110,"tom",18,98.5};printf("sno=%d\n",s.sno);printf("name=%s\n",s.name);printf("age=%d\n",s.age);printf("score=%.1f\n",s.score);return 0;}

结构体变量名.结构体成员变量名 
   s.sno
   s.name
   s.age
   s.score  //引用到结构体成员变量 
   
说明:
  1. 同一类型的结构体 变量间可以相互赋值 
  2. 结构体变量赋值,是赋值给结构体成员的 

->  //指向结构体成员运算符

结构体类型的指针->结构体成员变量名

void printStuInfo(struct student *s,int len){int i=0;printf("No\tName\tAge\tScore\n");printf("------|\t------|\t------|\t------\n");for(i=0;i<len;++i){printf(" %d\t",(s+i)->sno);printf("%s\t",(s+i)->name);printf("%d\t",(s+i)->age);printf("%.2f\n",s[i].score);}}

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

  1.结构体成员的对齐 --- 放在自然边界 (偶数位置)
  2.结构体整体的对齐 --- 以结构体中最大的成员对齐 
 

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

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

相关文章

idea打开springboot项目打不开文件夹 一直loading

点击file - InvalidateCaches 全选 后点击 Invalidate and Restart

early bird inject

基本原理 本质是利用windows系统的apc机制&#xff0c;以及涉及到windows进程启动的流程. 因为线程初始化阶段LdrInitializeThunk函数会调用NtTestAlert函数,这个函数执行后,所有apc队列中的例程都会执行.因此我们在主线程初始化之前向主线程的apc队列中加入恶意代码即可实现…

Flutter 实现 iOS 小组件与主 App 的通信

前言 在 Flutter 项目中实现 iOS 小组件与主 App 的通信&#xff0c;主要依赖于 App Groups 技术&#xff0c;以下是具体实现步骤和注意事项。 配置 App Groups 在 Xcode中为 Flutter 主应用&#xff08;Runner&#xff09;和 Widget Extension 配置相同的App Group 标识符…

【Unity Shader编程】之顶点着色器

来一张AI提供的资料 在shader编程中&#xff0c;定义的结构体&#xff0c;有些是会被自动赋值&#xff0c;有些是必须要手动赋值的&#xff0c;这就涉及到了语义&#xff0c; 例如 struct appdata{float4 vertex : POSITION;float vertex2;float2 uv : TEXCOORD0;};结构体里面定…

数据结构与算法-栈

参考学习&#xff1a;B站-逊哥带你学编程 栈的定义与实现 补充&#xff1a; 栈是限制插入和删除操作只能在一个位置进行的表&#xff0c;该位置是表的末端&#xff0c;叫作栈顶(top)。 对栈的基本操作有进栈(push)和出栈(Pop)&#xff0c;前者相当于插入后者则是删除最后插入…

嵌入式硬件篇---OpenMV的硬件流和软件流

文章目录 前言一、硬件流控制&#xff08;Hardware Flow Control&#xff09;1. 基本原理RTSCTS 2. OpenMV中的实现• 硬件要求• 代码配置• 工作流程 二、软件流控制&#xff08;Software Flow Control&#xff09;1. 基本原理XONXOFF 2. OpenMV中的实现• 代码配置• 工作流…

MySQL Workbench菜单汉化为中文

默认情况下&#xff0c;安装完成的MySQL Workbench的菜单为英文&#xff0c;今天介绍一个简单易操作的方法&#xff0c;将MySQL Workbench菜单汉化为中文。 一、查找MySQL Workbench菜单标记文件main_menu.xml 1. 默认情况下&#xff0c;MySQL Workbench的安装路径为&#xff…

C++从入门到实战(四)C++引用与inline,nullptr

C从入门到实战&#xff08;四&#xff09;C引用与inline&#xff0c;nullptr 前言一、C 引用&#xff08;一&#xff09;什么是引用&#xff08;二&#xff09;引用的特点&#xff08;三&#xff09;引用作为函数参数&#xff08;四&#xff09;引用作为函数返回值&#xff08;…

【C/C++算法】从浅到深学习--- 二分查找(图文兼备 + 源码详解)

绪论&#xff1a;冲击蓝桥杯一起加油&#xff01;&#xff01; 每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; 本章是算法篇章的第三章二分算法&#xff0c;本章主要是通过题目的形式来进行学习&…

mysql之联合索引

文章目录 一&#xff1a;联合索引二&#xff1a;创建联合索引三&#xff1a;删除索引四&#xff1a;总结&#xff1a; 一&#xff1a;联合索引 联合索引又称组合索引或者复合索引&#xff0c;是建立在俩列或者多列以上的索引。 二&#xff1a;创建联合索引 语法&#xff1a…

51单片机09 DS1302时钟

测试一 测试代码&#xff1a;别忘了之前调整点阵的跳线 #include <STC89C5xRC.H> #include "LCD1602.h"void main() {LCD_Init();LCD_ShowString(1,1,"RTC");while(1){} } ------------------------------------ 测试二 DS1302.C #include &l…

【前端OCR】如何用paddlejs开发一个属于前端本地的OCR文本识别功能

之前出过一篇关于用tesseract纯前端实现文本识别功能的文档&#xff0c;经测试之后&#xff0c;用是能用&#xff0c;但识别准确率并不高&#xff0c;而且耗时也相对比较久。 于是又找了一个paddlejs做开发测试&#xff0c;但是整体上来说&#xff0c;其实两个差不多。而且初始…

Spring IoC的实现机制是什么?

大家好&#xff0c;我是锋哥。今天分享关于【Spring IoC的实现机制是什么&#xff1f;】面试题。希望对大家有帮助&#xff1b; Spring IoC的实现机制是什么&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring IoC&#xff08;Inversion of Control…

Web3 开发者周刊 36 | 构建自主未来:Agent、可扩展性与赏金

欢迎来到 Web3 开发者周刊 36&#xff0c;这里汇聚了赋能您的 Web3 构建之旅的各种资源。本周我们将剖析基于Agent的系统&#xff0c;讨论来自 Vitalik 关于以太坊 L1 和 L2 的最新思考&#xff0c;并提供最新高价值Bounty消息。 开始Build吧&#xff01; ✅ One Trillion Age…

网络安全-防御 第一次作业(由于防火墙只成功启动了一次未补截图)

防火墙安全策略课堂实验报告 一、拓扑 本实验拓扑包含预启动设备、DMZ区域&#xff08;含OA Server和Web Server&#xff09;、防火墙&#xff08;FW1&#xff09;、Trust区域&#xff08;含办公区PC和生产区PC&#xff09;等。具体IP地址及连接关系如给定拓扑图所示&#xf…

Vue.js 与低代码开发:如何实现快速应用构建

在当今数字化时代&#xff0c;企业对应用开发的效率要求越来越高。传统开发模式往往耗时费力&#xff0c;难以满足快速变化的市场需求。而 Vue.js 与低代码开发的结合&#xff0c;为快速构建应用提供了新的解决方案&#xff0c;让企业能够更敏捷地响应市场变化&#xff0c;抢占…

第39周:猫狗识别 2(Tensorflow实战第九周)

目录 前言 一、前期工作 1.1 设置GPU 1.2 导入数据 输出 二、数据预处理 2.1 加载数据 2.2 再次检查数据 2.3 配置数据集 2.4 可视化数据 三、构建VGG-16网络 3.1 VGG-16网络介绍 3.2 搭建VGG-16模型 四、编译 五、训练模型 5.1 上次程序的主要Bug 5.2 修改版…

朝天椒USB服务器解决前置机U盾虚拟机远程连接

本文探讨朝天椒USB服务器用Usb Over Network技术&#xff0c;解决前置机虚拟化部署后U盾的远程连接问题。 在金融、电信等关键行业&#xff0c;后台核心处理系统承担着至关重要的业务数据交互职责。为保障系统安全&#xff0c;这些单位要求企业通过前置机与他们的内网进行数据…

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-23- 操作鼠标拖拽 - 番外篇(详细教程)

拉票 亲爱的小伙伴们或者童鞋们&#xff0c;喜欢宏哥文章的&#xff0c;请动动你们发财小手&#xff0c;给我投投票票 。 祝2025小伙伴们工作顺利&#xff0c;家庭和睦&#xff0c;心想事成&#xff0c;财源滚滚&#xff01; 我的票还有7票&#xff0c;互票的朋友私信给我。 投…

教程 | 从零部署到业务融合:DeepSeek R1 私有化部署实战指南

文章目录 1. 什么是 DeepSeek R1&#xff1f;a. 主要介绍a. 版本区别 2. 部署资源要求a. 硬件资源要求 3. 本地安装DeepSeek-R1a. 为什么选择本地部署&#xff1f;b. 部署工具对比c. 演示环境配置d. Ollama安装流程 4. 可视化工具a. 工具对比b. Open-WebUI部署 5. AI API应用a.…