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

[C语言]结构体初识

结构体定义

        结构体是一些值的集合,被成为成员变量,结构的每个成员可以是不同类型的变量

声明:

        定义了一个结构体比如以张蓝图,不占据内存,当你创建了一个结构体变量时,才占空间.

#include<stdio.h>//struct 为结构体关键字,  student 自定义结构体名称
struct student
{//成员变量列表char  name[20];//一个名字int age;       //年龄char sex;      //性别}s1,s2,s3;         //与下面的S变量都是结构体变量,但是s1,s2,s3为全局变量//上方定义了一个自定义的结构体类型main()
{struct student s;      //创建了student 结构体局部变量为 s;}

简便写法:

利用typedef  定义别名,  把 struct student整体 定义别名为stu   ,

定义变量时,利用stu创建结构体变量即可.     此刻stu 为结构体类型

#include<stdio.h>//struct 为结构体关键字,  student 自定义结构体名称, typedef 起别名typedef struct student  
{//成员变量列表char  name[20];//一个名字int age;       //年龄char sex;      //性别}stu;         //上方定义了一个自定义的结构体类型main()
{stu s;      //把struct student 整体 取了一个新名字 stu}

结构体变量可以是标量,变量,指针,数组,其他结构体.

#include<stdio.h>//struct 为结构体关键字,  student 自定义结构体名称struct student  
{//成员变量列表char  name[20];//一个名字int age;       //年龄char sex;      //性别};         struct txt 
{//成员变量列表int a;string str; struct  student s;   //结构体变量成员char   *pc;         //指针变量成员};         main()
{struct txt t={1,"你好",{"李明",12,'男'},arr};   //struct txt t 初始化}

结构体初始化

        1.创建结构体变量时,直接赋初值

main()
{stu s={"李明",20,"男"};      //初始化结  构体变量s}

访问结构体变量

        1.结构体变量.成员变量   (访问嵌套的结构体成员,利用 .嵌套 即可)

      


main()
{struct txt t={1,"你好",{"李明",12,'男'},arr};   //struct txt t 初始化printf("%s",t.str);      //  你好printf("%s",t.s.age);   //  12
}

        2.结构体指针->成员变量

#include<stdio.h>//struct 为结构体关键字,  student 自定义结构体名称, typedef 起别名typedef struct student  
{//成员变量列表char  name[20];   //一个名字int age;           //年龄char sex;          //性别}stu;         //上方定义了一个自定义的结构体类型-----------------------------------------------------------------------------------void print(stu* ps)           //形参为 结构体stu 的指针变量 ps
{printf("%s",ps->name);       //打印结果: 李明
}main()
{stu s={"李明",12,'男'};     print(&s);              //实参 为  &s}

第二种方法比第一种方法好

因为传参数时,参数是需要压栈的,第一个传递整个结构体对象,系统开销较大,传地址则会更小

 

数据结构:

线性结构

  1.         顺序表        (一条顺序的数据)
  2.         链表           (用一条链把数据连续起来)
  3.         栈              (先进后出), 插入一个元素叫"压栈",删除一个元素叫"出栈"
  4.         队列          (先进先出)

树形数据结构

        二叉树,图

 

相关文章:

[C语言]结构体初识

结构体定义 结构体是一些值的集合,被成为成员变量,结构的每个成员可以是不同类型的变量 声明: 定义了一个结构体比如以张蓝图,不占据内存,当你创建了一个结构体变量时,才占空间. #include<stdio.h>//struct 为结构体关键字, student 自定义结构体名称 struct student …...

跨平台开发:浅析uni-app及其他主流APP开发方式

随着智能手机的普及&#xff0c;移动应用程序&#xff08;APP&#xff09;的需求不断增长。开发一款优秀的APP&#xff0c;不仅需要考虑功能和用户体验&#xff0c;还需要选择一种适合的开发方式。随着技术的发展&#xff0c;目前有多种主流的APP开发方式可供选择&#xff0c;其…...

MyBatis常见面试题汇总

说一下MyBatis执行流程&#xff1f; MyBatis是一款优秀的基于Java的持久层框架&#xff0c;它内部封装了JDBC&#xff0c;使开发者只需要关注SQL语句本身&#xff0c;而不需要花费精力去处理加载驱动、创建连接等的过程&#xff0c;MyBatis的执行流程如下&#xff1a; 加载配…...

juc并发线程学习笔记(一)

本系列会更新我在学习juc时的笔记和自己的一些思想记录。如有问题欢迎联系。 并发编程 进程与线程 1.进程和线程的概念 程序是静态的&#xff0c;进程是动态的 进程 程序由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载…...

力扣热门100题刷题笔记 - 3.无重复字符的最长子串

力扣热门100题 - 3.无重复字符的最长子串 题目链接&#xff1a;3. 无重复字符的最长子串 题目描述&#xff1a; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。示例&#xff1a; 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字…...

达梦数据库死锁排查与解决

在达梦数据库系统中&#xff0c;死锁是指两个或多个事务相互等待对方释放资源&#xff0c;从而造成循环等待的现象&#xff0c;严重影响数据库的正常运行。以下是使用达梦数据库进行死锁排查和解决的具体步骤&#xff1a; 死锁查看 查询当前死锁信息 SELECT lc.lmode, lc.ta…...

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TextClock组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之TextClock组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、TextClock组件 TextClock组件通过文本将当前系统时间显示在设备上。支持不同…...

CICD注册和使用gitlab-runner常见问题

1、现象 fatal: unable to access https://github.com/homebrew/brew/: 2、解决 git config --global --unset http.proxy git config --global --unset https.proxy 查看gitlab-runner是否成功&#xff1a; userusers-MacBook-Pro ~ % gitlab-runner -h 查看gitlab-run…...

关于Django部署

首先了解一下开发环境服务器跟生产环境服务器有何不同。 一、我们通过 python manage.py runserver 启动开发环境服务器&#xff0c;这条命令背后做了哪些事情&#xff1f; 1、首先加载Django项目的设置&#xff08;settings&#xff09; 2、检查数据库迁移&#xff0c;确保数…...

计算机网络——01什么是InterNet

什么是InterNet 1.1 什么是网络 由节点和边组成的与形状大小无关的拓扑 1.2 什么是Internet 从具体构成角度来说&#xff1a; 节点&#xff1a; 主机及其上运行的应用程序路由器、交换机等网络交换设备 边&#xff1a;通信链路 接入网链路&#xff1a;主机连接到互联网的链…...

刷存在感,Excel转Protobuf/Json通用配置文件

使用场景 最近工作流中有将Excel转Protobuf作为配置文件的技术方案。具体实现是先定一个proto文件&#xff0c;再在一个对应excel表中定义对应字段&#xff0c;由策划在excel进行更改。proto文件可以生成对应语言的脚本&#xff0c;然后将excel转成对应protobuf的binary。 我…...

docker 开放tcp连接供idea等其他外部工具开放使用

docker 开放tcp连接供idea等其他外部工具开放使用 方法一&#xff1a;通过systemd工具 sudo systemctl edit docker.service 修改文件内容如下 ExecStart/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 重启 systemctl 配置 sudo systemctl daemon-reload 重启docker服务 s…...

虚拟机(VMware)ubuntu16.04 直接连接网口设备 USRP 吊舱

编辑虚拟网络编辑器 点击之后 选择网卡之后&#xff0c;点击确定。 电脑配置 使用了&#xff1a;192.168.2.56 虚拟机内部配置 和PC的配置一致...

告别繁杂的状态管理:Zustand 的简洁之道

1. Zustand Zustand 是一个轻量级的状态管理库&#xff0c;用于 JavaScript 应用程序&#xff0c;特别是在 React 生态系统中。它提供了一个简单、可扩展的解决方案来中心化和管理应用程序的状态。 与其他状态管理解决方案&#xff08;如 Redux 或 MobX&#xff09;相比&…...

CentOS磁盘扩容

参考操作 检查磁盘扩容情况 lsblk 使用fdisk命令进行开垦&#xff0c;有时需要重启之后才能进行下一步 fdisk /dev/新盘mkfs.ext4 /dev/新盘使用pvcreate直接创建虚拟卷 pvcreate /dev/新盘使用vgextend添加新创建的虚拟卷 vgextend 卷名称 /dev/新盘使用lvextend进行扩容…...

【数据分享】1929-2023年全球站点的逐日降雪深度数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 之前我们分享过1929-2023年全球气象站点的逐日平均气温数据、逐日最高气温数据…...

golang网络编程day4

golang网络编程day4 get和post的区别resful编程golang请求头golangheader内容类型和字符编码http请求头缓存和过期应用golang 请求头跨域请求应用http请求头用户代理应用golang响应头 get和post的区别 在前面的学习我只在应用场景上做了一个区别的举例,这里是进一步的学习有哪…...

为什么pgsql(内关联查询或者with字句时)会导致索引失效

1、在PostgreSQL中&#xff0c;内关联查询可能导致索引失效的原因通常与查询的过滤条件和数据分布有关。 以下是一些可能导致索引失效的情况&#xff1a; 1、使用了函数或类型转换&#xff1a;当查询条件中对索引字段使用了任何计算、函数或类型转换时&#xff0c;这可能会阻止…...

小程序 自定义组件和生命周期

文章目录 ⾃定义组件创建⾃定义组件声明组件编辑组件注册组件 声明引⼊⾃定义组件⻚⾯中使⽤⾃定义组件定义段与⽰例⽅法组件-⾃定义组件传参过程 小程序生命周期应用生命周期页面生命周期页面生命周期 ⾃定义组件 类似vue或者react中的自定义组件 ⼩程序允许我们使⽤⾃定义组件…...

asp.net 404页面配置、 asp.net MVC 配置404页面、iis 配置404页面,指定404错误页面,设置404错误页面

通过标题的三个问题 1、asp.net 404页面配置、 2、asp.net MVC 配置404页面、 3、iis 配置404页面&#xff1b; 可以看出&#xff0c;这是一篇了不得的问题&#xff0c;并进行全面讲解&#xff1b; 除了围绕以上三个核心问题外&#xff0c;我们也对以下2个核心场景也作出分析…...

WebGL/Three.js性能优化实战:你的3D模型为什么卡?从理解栅格化与渲染管线开始

WebGL/Three.js性能优化实战&#xff1a;从栅格化原理到渲染管线调优 当你用Three.js加载一个精致的3D模型时&#xff0c;是否遇到过页面突然卡顿、风扇狂转的情况&#xff1f;这背后往往与浏览器如何将矢量图形转换为屏幕像素的过程密切相关。今天我们就从栅格化的底层原理出发…...

不止于检测:如何用FastAPI和VUE3给你的YOLO行人识别系统加上数据大屏、模型管理和AI聊天?

从算法Demo到商业级系统&#xff1a;基于FastAPI与VUE3的智能检测平台架构实战 当你的YOLO模型能在测试集上跑出漂亮指标时&#xff0c;下一个问题自然浮现&#xff1a;如何让这个算法真正产生业务价值&#xff1f;我们见过太多优秀的检测模型被困在Jupyter Notebook里&#xf…...

OpenClaw云端体验指南:无需本地安装快速测试Phi-3-vision-128k-instruct

OpenClaw云端体验指南&#xff1a;无需本地安装快速测试Phi-3-vision-128k-instruct 1. 为什么选择云端体验OpenClaw 作为一个长期折腾本地AI部署的技术爱好者&#xff0c;我完全理解那种"想先试试再决定是否投入"的心态。去年尝试在MacBook Pro上部署Llama 2时&am…...

为什么80%AI率降完后还有残留?根本原因在这

你用了降AI工具&#xff0c;处理前90%&#xff0c;处理后17%。 17%达标了&#xff0c;但还是有AI率残留。或者更糟&#xff0c;处理后22%&#xff0c;还是没过。 为什么工具处理后AI率不能降到0%&#xff1f;残留从哪来&#xff1f;怎么进一步处理&#xff1f; 残留AI率的三…...

Avalonia实战:5分钟搞定无边框窗口自定义(附拖拽功能完整代码)

Avalonia实战&#xff1a;5分钟实现无边框窗口与拖拽功能全解析 第一次接触Avalonia的无边框窗口时&#xff0c;我花了整整一天时间才搞明白各种属性的作用。现在回想起来&#xff0c;如果能有一篇直击要点的指南&#xff0c;至少能节省80%的调试时间。本文将带你快速掌握两种取…...

IGBT驱动电路设计避坑指南:从选型到PCB布局的8个关键点

IGBT驱动电路设计避坑指南&#xff1a;从选型到PCB布局的8个关键点 在电力电子领域&#xff0c;IGBT驱动电路的设计质量直接决定了整个系统的可靠性和效率。我曾亲眼见过一个价值百万的变频器项目&#xff0c;因为驱动电阻选型不当导致批量烧毁&#xff0c;团队不得不连续加班三…...

基于VSC控制的400kW光伏并网发电厂模型

基于VSC控制的400kW光伏并网发电厂模型simulink模型各模块清晰明白&#xff0c;非常适用于新手入门学习大家好&#xff01;今天我要和大家分享一个关于光伏并网发电厂模型的Simulink仿真项目。这个模型基于电压源式开关&#xff08;VSC&#xff09;控制&#xff0c;非常适合400…...

新手福音:在快马平台通过生成式提示零基础学懂lstm情感分析

今天想和大家分享一个特别适合深度学习新手的实践项目——用LSTM做文本情感分析。作为一个刚入门NLP的小白&#xff0c;我最初看到"长短期记忆网络"这个词就头大&#xff0c;直到在InsCode(快马)平台上通过生成式提示直接获得了可运行的代码项目&#xff0c;才真正理…...

兼容FX3U源码的增强版:支持以太网与串口下载,集成MODBUS-TCP协议,实现相对定位与绝...

18650锂电池高温热失控一、模块概述 FX3U系列PLC CAN网络通信模块是基于STM32F10x系列微控制器开发的专用通信组件&#xff0c;旨在实现多节点PLC设备间的可靠数据交互。该模块采用STM32F10x CAN外设硬件资源&#xff0c;结合自定义应用层协议&#xff0c;支持主从式网络架构&a…...

网络排障实战:当ping命令不好使时,如何用Wireshark抓包分析ICMP协议找出真凶?

网络排障实战&#xff1a;当ping命令失效时&#xff0c;如何用Wireshark解码ICMP协议故障 当你面对一台无法ping通的目标主机时&#xff0c;"请求超时"的提示就像一堵没有门的墙——它告诉你无法通行&#xff0c;却不会解释原因。作为运维工程师&#xff0c;我曾遇到…...