[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}
第二种方法比第一种方法好
因为传参数时,参数是需要压栈的,第一个传递整个结构体对象,系统开销较大,传地址则会更小
数据结构:
线性结构
- 顺序表 (一条顺序的数据)
- 链表 (用一条链把数据连续起来)
- 栈 (先进后出), 插入一个元素叫"压栈",删除一个元素叫"出栈"
- 队列 (先进先出)
树形数据结构
二叉树,图
相关文章:
[C语言]结构体初识
结构体定义 结构体是一些值的集合,被成为成员变量,结构的每个成员可以是不同类型的变量 声明: 定义了一个结构体比如以张蓝图,不占据内存,当你创建了一个结构体变量时,才占空间. #include<stdio.h>//struct 为结构体关键字, student 自定义结构体名称 struct student …...
跨平台开发:浅析uni-app及其他主流APP开发方式
随着智能手机的普及,移动应用程序(APP)的需求不断增长。开发一款优秀的APP,不仅需要考虑功能和用户体验,还需要选择一种适合的开发方式。随着技术的发展,目前有多种主流的APP开发方式可供选择,其…...
MyBatis常见面试题汇总
说一下MyBatis执行流程? MyBatis是一款优秀的基于Java的持久层框架,它内部封装了JDBC,使开发者只需要关注SQL语句本身,而不需要花费精力去处理加载驱动、创建连接等的过程,MyBatis的执行流程如下: 加载配…...
juc并发线程学习笔记(一)
本系列会更新我在学习juc时的笔记和自己的一些思想记录。如有问题欢迎联系。 并发编程 进程与线程 1.进程和线程的概念 程序是静态的,进程是动态的 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载…...
力扣热门100题刷题笔记 - 3.无重复字符的最长子串
力扣热门100题 - 3.无重复字符的最长子串 题目链接:3. 无重复字符的最长子串 题目描述: 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字…...
达梦数据库死锁排查与解决
在达梦数据库系统中,死锁是指两个或多个事务相互等待对方释放资源,从而造成循环等待的现象,严重影响数据库的正常运行。以下是使用达梦数据库进行死锁排查和解决的具体步骤: 死锁查看 查询当前死锁信息 SELECT lc.lmode, lc.ta…...
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TextClock组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之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是否成功: userusers-MacBook-Pro ~ % gitlab-runner -h 查看gitlab-run…...
关于Django部署
首先了解一下开发环境服务器跟生产环境服务器有何不同。 一、我们通过 python manage.py runserver 启动开发环境服务器,这条命令背后做了哪些事情? 1、首先加载Django项目的设置(settings) 2、检查数据库迁移,确保数…...
计算机网络——01什么是InterNet
什么是InterNet 1.1 什么是网络 由节点和边组成的与形状大小无关的拓扑 1.2 什么是Internet 从具体构成角度来说: 节点: 主机及其上运行的应用程序路由器、交换机等网络交换设备 边:通信链路 接入网链路:主机连接到互联网的链…...
刷存在感,Excel转Protobuf/Json通用配置文件
使用场景 最近工作流中有将Excel转Protobuf作为配置文件的技术方案。具体实现是先定一个proto文件,再在一个对应excel表中定义对应字段,由策划在excel进行更改。proto文件可以生成对应语言的脚本,然后将excel转成对应protobuf的binary。 我…...
docker 开放tcp连接供idea等其他外部工具开放使用
docker 开放tcp连接供idea等其他外部工具开放使用 方法一:通过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 吊舱
编辑虚拟网络编辑器 点击之后 选择网卡之后,点击确定。 电脑配置 使用了:192.168.2.56 虚拟机内部配置 和PC的配置一致...
告别繁杂的状态管理:Zustand 的简洁之道
1. Zustand Zustand 是一个轻量级的状态管理库,用于 JavaScript 应用程序,特别是在 React 生态系统中。它提供了一个简单、可扩展的解决方案来中心化和管理应用程序的状态。 与其他状态管理解决方案(如 Redux 或 MobX)相比&…...
CentOS磁盘扩容
参考操作 检查磁盘扩容情况 lsblk 使用fdisk命令进行开垦,有时需要重启之后才能进行下一步 fdisk /dev/新盘mkfs.ext4 /dev/新盘使用pvcreate直接创建虚拟卷 pvcreate /dev/新盘使用vgextend添加新创建的虚拟卷 vgextend 卷名称 /dev/新盘使用lvextend进行扩容…...
【数据分享】1929-2023年全球站点的逐日降雪深度数据(Shp\Excel\免费获取)
气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 之前我们分享过1929-2023年全球气象站点的逐日平均气温数据、逐日最高气温数据…...
golang网络编程day4
golang网络编程day4 get和post的区别resful编程golang请求头golangheader内容类型和字符编码http请求头缓存和过期应用golang 请求头跨域请求应用http请求头用户代理应用golang响应头 get和post的区别 在前面的学习我只在应用场景上做了一个区别的举例,这里是进一步的学习有哪…...
为什么pgsql(内关联查询或者with字句时)会导致索引失效
1、在PostgreSQL中,内关联查询可能导致索引失效的原因通常与查询的过滤条件和数据分布有关。 以下是一些可能导致索引失效的情况: 1、使用了函数或类型转换:当查询条件中对索引字段使用了任何计算、函数或类型转换时,这可能会阻止…...
小程序 自定义组件和生命周期
文章目录 ⾃定义组件创建⾃定义组件声明组件编辑组件注册组件 声明引⼊⾃定义组件⻚⾯中使⽤⾃定义组件定义段与⽰例⽅法组件-⾃定义组件传参过程 小程序生命周期应用生命周期页面生命周期页面生命周期 ⾃定义组件 类似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页面; 可以看出,这是一篇了不得的问题,并进行全面讲解; 除了围绕以上三个核心问题外,我们也对以下2个核心场景也作出分析…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...
C# WPF 左右布局实现学习笔记(1)
开发流程视频: https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源码: GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF应用(.NET Framework) 2.…...
【字节拥抱开源】字节团队开源视频模型 ContentV: 有限算力下的视频生成模型高效训练
本项目提出了ContentV框架,通过三项关键创新高效加速基于DiT的视频生成模型训练: 极简架构设计,最大化复用预训练图像生成模型进行视频合成系统化的多阶段训练策略,利用流匹配技术提升效率经济高效的人类反馈强化学习框架&#x…...
