C语言学习日记————结构体

结构体是一种数据类型-----构造类型

struct 结构体名
{
   成员列表
};

1、struct                                      //结构体 类型 关键字
2、结构体名                                //表明这个结构体类型的名称
3、成员列表                                //来描述结构体类型中具体的一些数据
                                                    //成员变量
       
       
注意结束的}后面要有一个分号!!
声明结构体类型
struct studet
{
    char name[20];
    char sex;
    int sno;
    float core;
}

int main(void)
{
    int a;
    //初始化方式:按照成员列表的对应方式依次初始化
         struct student s = {“xiaoming”,0,1110,99.5};
         
         结构体变量的引用:
         方法:
         结构体变量名.成员名       (这个.是结构体成员运算符)
         eg:s.name   //访问s中的name
   //打印
    printf("name = %s\n",s.name);   //访问s中的name
}


结构体变量不能整体的输入值
 eg:  scanf(“%d”,&s.sno);     因为.运算符的优先级高于&。所以不需要加括号
 
 注意: 在输入字符型数据的时候结尾的回车哟啊通过getchar()来吃掉它
 eg:  scanf(“%s”,&s.name);
       getchar();
       scanf(“%c”,&s.sex);

定义的方式:
1、 先声明变量 再定义变量   
   //如上面的例子
   但不能再main中声明会出现错误
2、 声明类型的同时定义变量:
   struct student
   {
       ...
   }s;
   
3、 声明类型的同时定义变量 但是省略结构体的名
  suruct 
  {
      。。。
  }s;
  
  
  
  0.两个结构体运算符:
  
  .                //成员运算符
  方法:  
      结构体变量名 . 成员变量名
  
  ->             // 指向结构体成员运算符
  方法:
       结构体类型的指针 -> 成员变量名
  
  同一类型的结构体变量之间是可以相互赋值的
  通过结构体类ing的指针 也可以访问到结构体成员
  结构体类型既可以做函数形参,也可以做为返回值
  
  
  qsort(起始地址,元素个数,单个元素大小,排序规则)
  
  
 
 考点:
   结构体实际的大小并不等于结构体里数据类型大小的简单相加
 
 !注意!
   计算机存在效率问题
 
 
 内存对齐:
  结构体对齐规则:    //内存地址的对齐
  结构体对齐:
  1、在32位的平台上,默认都是按照4字节对齐的。
     在64位的平台上,默认都是按照8字节对齐的
  2、对于成员变量,
     各自在自己的自然边界上对齐。
      char --1字节
      short--2字节
      int  --4字节
  
  3、如果 成员变量中有比4字节大。此时整个结构体按照4字节对齐。
  4、如果 成员变量中没有比4字节大的,此时整个结构体按照最大的那个成员对齐。   

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

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

相关文章

Lua 基础 04 模块

Lua 基础相关知识 第四期 require 模块,通常是一个表,表里存储了一些字段和函数,单独写在一个 lua 文件。 例如,这是一个 tools.lua 文件,定义了一个局部 tools 表,包含一个 log 函数,可以传…

用容器构建wordpress项目

用容器构建wordpress项目 #准备两个镜像 #数据库和centos docker pull mysql:5.7 docker pull centos:7 #创建一个wordpress文件夹,在wordpress文件里面写一个Dockerfile文件 vim DockerfileFROM centos:7 #基于centos环境RUN yum -y install epel-release ;\ #安装…

笔记93:关于 C++ 中的 Eigen 库

注意1&#xff1a;Eigen 是一个基于 C 模板的线性代数库&#xff0c;以支持在 C 中进行矩阵运算&#xff1b; 注意2&#xff1a;要在 C 中使用 Eigen&#xff0c;需要在在程序开始前要包含所需头文件路径&#xff1b; #include <Eigen> a a 基础用法汇总 定义向量 E…

Shell编程实际应用

一、脚本编程步骤 1. 需求分析 2. 命令测试 3. 脚本编程 4. 测试调优 二、案例分析 1.MAC记录与端口扫描 实验要求&#xff1a; &#xff08;1&#xff09;统计网络中服务器MAC。 &#xff08;2&#xff09;检查哪些主机开启FTP。&#xff08;21&#xff09;&#xff08;wg…

vue3状态管理,pinia的使用

​​​​​​​状态管理 我们知道组件与组件之间可以传递信息&#xff0c;那么我们就可以将一个信息作为组件的独立状态&#xff08;例如&#xff0c;单个组件的颜色&#xff09;或者共有状态&#xff08;例如&#xff0c;多个组件是否显示&#xff09;在组件之传递&#xff0c…

顺序表的讲解与实现

顺序表的讲解与实现 一、顺序表的概念及结构二、顺序表分类顺序表和数组的区别顺序表分类静态顺序表动态顺序表 三、动态顺序表的实现(使用VS2022)1.初始化、销毁、打印内容2.检查扩容3.尾部插入、尾部删除、头部插入、头部删除尾部插入尾部删除头部插入头部删除 4.指定插入、指…

C++ stack类与queue类

目录 0.前言 1.容器适配器 1.1容器适配器的特点 1.2容器适配器的实现 1.3使用容器适配器的场景 2.stack的介绍与使用 2.1介绍 2.2使用 3.queue的介绍与使用 3.1介绍 3.2使用 4.stack和queue的模拟实现 4.1 stack的模拟实现 4.2 queue的模拟实现 5.结语 &#xf…

博客星球大冒险:用Spring Boot和JWT打造你的数字王国

揭秘如何在Spring Boot中无缝集成JWT&#xff0c;为你的应用打造一个高度可扩展且安全的认证系统。从添加依赖到创建JWT过滤器&#xff0c;再到实现令牌的有效性管理和刷新机制&#xff0c;每一步都精心设计&#xff0c;确保你的乐园能够迎接成千上万的游客&#xff01; 文章目…

Spark_SparkOnHive_海豚调度跑任务写入Hive表失败解决

背景 前段时间我在海豚上打包程序写hive出现了一个问题&#xff0c;spark程序向hive写数据时&#xff0c;报了如下bug&#xff0c; org.apache.spark.sql.AnalysisException: The format of the existing table test.xx is HiveFileFormat It doesnt match the specified for…

全球七家半导体工厂建设受阻:英特尔、三星、台积电等面临延期挑战

过去两年间&#xff0c;半导体行业经历了市场衰退、复苏慢于预期以及资金紧缩等问题&#xff0c;英特尔、台积电和三星等主要企业虽然继续推进扩张计划&#xff0c;但不断调整和放缓工厂建设的步伐与时间表&#xff0c;以更好地服务于长期发展目标。据统计&#xff0c;全球范围…

LLM主流开源代表模型

LLM主流开源大模型介绍 1 LLM主流大模型类别 随着ChatGPT迅速火爆&#xff0c;引发了大模型的时代变革&#xff0c;国内外各大公司也快速跟进生成式AI市场&#xff0c;近百款大模型发布及应用。 目前&#xff0c;市面上已经开源了各种类型的大语言模型&#xff0c;本章节我们…

【MATLAB源码-第220期】基于matlab的Massive-MIMO误码率随着接收天线变化仿真采用ZF均衡和QPSK调制。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 系统背景与目标 无线通信系统的发展极大地推动了现代通信技术的进步&#xff0c;从移动通信到无线局域网&#xff0c;甚至是物联网&#xff0c;均依赖于无线通信系统的高效和可靠性。在无线通信系统中&#xff0c;核心目…

【kafka】关于Kafka的入门介绍

为什么要使用kafka&#xff1f;kafka是什么东西&#xff1f; 案例场景 A服务向B服务发送消息&#xff0c;A服务传输数据很快&#xff0c;B服务处理数据很慢&#xff0c;这样B服务就会承受不住&#xff0c;怎么办&#xff1f;通过添加消息队列作为缓冲。kafka就是消息队列中的…

初识C++ · 模拟实现stack和Queue

目录 前言&#xff1a; 1 Stack 1.1 双端队列 2 Queue 前言&#xff1a; 经历了list三个自定义类型的洗礼&#xff0c;来个简单的放松放松&#xff0c;即栈和队列&#xff1a; 文档记录的&#xff0c;栈和队列是一种容器适配器&#xff0c;它们不属于stl&#xff0c;但是它…

进程间并发通信-IO多路复用

1 select 1.1 源码示例 /*************************************************************************> File Name: write.c> Author: yas> Mail: rage_yashotmail.com> Created Time: 2024年06月02日 星期日 14时50分23秒************************************…

低空经济发展报告

低空经济是指利用低空空间进行商业开发和经济活动的概念。随着航空技术的发展和无人机的普及&#xff0c;低空经济逐渐成为一个新兴的经济领域。 低空经济可以涵盖的领域非常广泛&#xff0c;包括但不限于物流配送、农业植保、城市交通、旅游观光等。利用无人机等飞行器进行物…

嵌入式学习——网络编程(TCP)——day31

1. TCP和UDP的区别 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09; UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09; 1.1 连接方式 TCP 是面向连接的协议&#xff0c;它在数据传输前需要通过三次握手建立…

【算法】一文搞懂归并排序

概念 归并排序利用了分治思想&#xff0c;将待排序的数组范围层层划分&#xff0c;每次划分会得到两个大小相近的区间。当无法划分时&#xff0c;递归结束&#xff0c;自下而上进行区间合并merge操作&#xff0c;合并操作依次比较两个区间的元素&#xff0c;进而使合并后的区间…

【西瓜书】5.神经网络

1.概念 有监督学习正向传播&#xff1a;输入样本---输入层---各隐层---输出层反向传播&#xff1a;误差以某种形式在通过隐层向输入层逐层反转&#xff0c;并将误差分摊给各层的所有单元&#xff0c;以用于修正各层的权值激活函数&#xff1a;也叫阶跃函数&#xff0c;目的是引…

LeetCode:反转链表I

文章收录于LeetCode专栏 LeetCode地址 反转链表I 题目 给你单链表的头节点head&#xff0c;请你反转链表&#xff0c;并返回反转后的链表。   示例 1&#xff1a; #mermaid-svg-IYmD16EKuu3CZWwV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size…