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

C语言基础-结构体

结构体类型的声明

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

数组:一组相同类型元素的集合

结构体:其实是一组不一定相同类型元素的集合

//结构声明
// struct tag  //tag根据实际情况给名字
// {
//     member-list;   //成员列表(1个或者多个)
// }variable-list;//变量列表//描述一个学生
//名字+年龄+性别//声明结构体类型
// struct Stu
// {
//     //成员变量,是用来描述结构体对象的相关属性的
//     char name[20];
//     int age;
//     char sex[5]; //男 女 保密
// }; //s2,s3,s4;//s2,s3,s4就是结构体变量 - 全局变量// typedef struct Stu   //重命名
// {
//     //成员变量,是用来描述结构体对象的相关属性的
//     char name[20];
//     int age;
//     char sex[5]; //男 女 保密
// } Stu;// int main()
// {
//     struct Stu s1; //局部变量
//     //Stu s2; //在c语言中,没有对结构体类型typedef,struct关键字不能省略//     return 0;
// }

结构体初始化

//结构成员的类型
struct S
{int a;char arr[5];int* p;
}s1 = {100,"fan",NULL};//int n = 2023;
// struct S s2 = {98,"111",&n};
struct S s2 = {98,"111",NULL};struct B
{char arr[10];struct S s;double d;
};int main()
{struct S s3 = {.arr = "aaa", .a = 10, .p = NULL};//printf("%d %s %p\n",s1.a,s1.arr,s1.p); //结构成员访问操作符//printf("%d %s %p\n",s2.a,s2.arr,s2.p);//printf("%d %s %p\n",s3.a,s3.arr,s3.p);struct B b = {"hello",{20,"aaa",NULL},3.14};printf("%s %d %s %p %lf\n",b.arr, b.s.a, b.s.arr, b.s.p, b.d);return 0;
}

结构体成员访问

struct Stu
{/* data */char name[20];int age;
};// void set_stu(struct Stu* ps)
// {
//     (*ps).age = 20;
//     //t.name = "张三";  //err
//     strcpy((*ps).name,"张三");   //字符串拷贝
// }void set_stu(struct Stu* ps)
{ps->age = 20; //结构体成员访问操作符     结构体指针 -> 结构体成员//t.name = "张三";  //errstrcpy(ps->name,"张三");   //字符串拷贝
}void printf_stu(struct Stu t)
{printf("%s %d\n",t.name,t.age);
}int main()
{struct Stu s = {0};set_stu(&s); //传值调用printf_stu(s);return 0;
}

结构体传参

//结构体传参
struct S
{/* data */int data[1000];int num;
};struct S s = {{1,2,3,4},1000};
//结构体传参
void print1(struct S s)
{printf("%d\n",s.num);
}
//结构体地址传参
void print2(struct S* ps)
{printf("%d\n",ps->num);
}int main()
{print1(s); //传结构体print2(&s);//传地址return 0;
}
//结构体传参,尽量选用结构体地址传参

相关文章:

C语言基础-结构体

结构体类型的声明 结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量 数组:一组相同类型元素的集合 结构体:其实是一组不一定相同类型元素的集合 //结构声明 // struct tag //tag根据实际情况给名字…...

Codeforces Round 848 (Div. 2)C

B. The Forbidden Permutation 一定要注意题目中说的是对于all i满足才算不好的&#xff0c;我们做的时候只要破坏一个i这个a就不算好的了,被这一点坑了&#xff0c;没注意到all。 #include <bits/stdc.h>using namespace std; typedef long long LL; const int N 2e5 …...

数据分发服务DDS

文章目录 DDS技术的特点和优势DDS数据分发服务在车载控制器上的应用 DDS技术的特点和优势 DDS&#xff08;Data Distribution Service&#xff09;技术是一种实时数据分发服务&#xff0c;它是一种基于发布/订阅模式的中间件&#xff0c;用于在分布式系统中实现高性能、可扩展…...

Linux 文件 目录管理 链接

Linux 文件 基本属性 Linux 系统是一种典型的多用户系统&#xff0c;为了保护系统的安全性&#xff0c;不同的用户拥有不同的地位和权限。Linux 系统对不同的用户访问同一文件&#xff08;包括目录文件&#xff09;的权限做了不同的规定。 可以使用命令&#xff1a;ll 或 ls –…...

R统计绘图-线性混合效应模型详解(理论、模型构建、检验、选择、方差分解及结果可视化)

目录 一、 基础理论 二、数据准备 三、构建线性混合效应模型(LMMs) 3.1 lme4线性混合效应模型formula 3.2 随机截距模型构建及检验 3.3 随机截距模型分析结果解释及可视化 3.4 随机斜率模型构建、检验及可视化 四、线性混合效应模型选择 4.1 多模型比较 4.2 模型最优子…...

钾和钠含量

声明 本文是学习GB-T 397-2022 商品煤质量 炼焦用煤. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了炼焦用商品煤产品质量等级和技术要求、试验方法、检验规则、标识、运输及贮存。 本文件适用于生产、加工、储运、销售、使用…...

Linux离线安装elasticsearch|header|kibna插件最详细

1.准备软件安装包 [hadoophost152 elasticsearch]$ ll -rw-r--r--. 1 hadoop hadoop 515807354 9月 23 23:40 elasticsearch-8.1.1-linux-x86_64.tar.gz -rw-r--r--. 1 hadoop hadoop 1295593 9月 23 23:48 elasticsearch-head-master.tar.gz -rw-r--r--. 1 hadoop hadoop…...

网络协议学习地图分享

最近在回顾网络知识点的时候&#xff0c;发现华为数通有关报文格式及网络协议地图神仙网站&#xff0c;这里涵盖了各个协议层及每个协议层对应的协议内容&#xff0c;最人性的化的一点是点击每个单独的协议可以跳转到该协议详细报文格式页面&#xff0c;有对应的说明和解释&…...

nlohmann/json——NLOHMANN_JSON_SERIALIZE_ENUM

目录 源码如下&#xff1a; 源码分析&#xff1a; 使用示例&#xff1a; 源码如下&#xff1a; /*! brief macro to briefly define a mapping between an enum and JSON def NLOHMANN_JSON_SERIALIZE_ENUM since version 3.4.0 */ #define NLOHMANN_JSON_SERIALIZE_ENUM(EN…...

类和对象:运算符重载

本篇文章来介绍一下C中的运算符重载&#xff0c;以及与运算符重载有关的三个默认默认成员函数&#xff1a;赋值运算符重载&#xff0c;普通对象取地址与const对象取地址操作符重载&#xff0c;也就是下面图片中6个默认成员函数的后三个&#xff0c;前三个默认成员函数在之前文章…...

Vue中使用VueAMap

npm 安装 npm install vue-amap --save注册:高德地图 // 在main.js中注册:高德地图 import VueAMap from "vue-amap"; Vue.use(VueAMap); VueAMap.initAMapApiLoader({key: "你的高德key",plugin: ["AMap.AutoComplete", //输入提示插件"A…...

Vue中的路由介绍以及Node.js的使用

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Vue》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这个专栏…...

将本地项目上传至Github详解

目录 1 前言2 本地代码上传2.1 命令行方法2.2 图形界面法2.3 结果 1 前言 GitHub是一个面向开源及私有软件项目的托管平台&#xff0c;因为只支持Git作为唯一的版本库格式进行托管&#xff0c;故名GitHub 。开发者常常将github作为代码管理平台&#xff0c;方便代码存储、版本…...

Vivado下PLL实验

文章目录 前言一、CMT&#xff08;时钟管理单元&#xff09;1、CMT 简介2、FPGA CMT 框图3、MMCM 框图4、PLL 框图 二、创建工程1、创建工程2、PLL IP 核配置3、进行例化 三、进行仿真1、创建仿真文件2、进行仿真设置3、进行行为级仿真 四、硬件验证1、引脚绑定2、生成比特流文…...

简单理解推挽输出和开漏输出

推挽输出原理图&#xff1a; 特点&#xff1a; 1、INT1时&#xff0c;OUTVDD&#xff1b;INT0时&#xff0c;OUTGND。 2、推挽输出的两种输出状态&#xff0c;一种是PMOS管S级端的电压VDD&#xff0c;一种是NMOS管S端的地GND。 开漏输出原理图&#xff1a; 特点&#xff1a; …...

C++之va_start、vasprintf、va_end应用总结(二百二十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…...

OpenCV自学笔记十一:形态学操作(一)

目录 1、腐蚀 2、膨胀 3、通用形态学函数 4、开运算 5、闭运算 1、腐蚀 腐蚀&#xff08;Erosion&#xff09;是数字图像处理中的一种形态学操作&#xff0c;用于消除图像中边界附近的细小区域或缩小对象的大小。腐蚀操作通过卷积输入图像与结构元素&#xff08;也称为腐…...

封装全局异常处理

文章目录 1 定义错误码类2 定义业务异常类3 全局异常处理器4 使用5 前端请求效果总结 1 定义错误码类 ​ 可以定义各种错误码枚举&#xff0c;比如业务&#xff0c;系统相关的报错信息 /*** 错误代码* 错误码** author leovany* date 2023/09/23*/ public enum ErrorCode {SU…...

python的requests响应请求,结果乱码,即使设置了response.encoding也没有用的解决方法

一、问题 如图&#xff1a; 一般出现乱码&#xff0c;我们会有三种解决方式&#xff0c;如下但是图中解决了发现还是不行, response.encodingresponse.apparent_encoding通过看网页源码对response.encodingutf8指定编码格式或者直接通过response.content.decode()来获得源码 出…...

PyCharm 手动下载插件

插件模块一直加载失败&#xff0c;报错信息&#xff1a; Marketplace plugins are not loaded. Check the internet connection and refresh. 尝试了以下方法&#xff0c;均告失败&#xff1a; pip 换源Manage Plugin Repositories...HTTP 代理设置...关闭三个防火墙 最后选…...

并发编程模式(如生产者-消费者、任务分区、发布-订阅等)可以帮助我们更好地组织多线程代码,提高可维护性、性能和健壮性

基于之前的线程同步优化代码,我将进一步引入并发编程模式,以更结构化和可扩展的方式优化加热控制逻辑。并发编程模式(如生产者-消费者、任务分区、发布-订阅等)可以帮助我们更好地组织多线程代码,提高可维护性、性能和健壮性。 在加热控制场景中,适合的模式包括任务分区…...

终极指南:揭秘LIEF二进制格式识别算法的实现原理 [特殊字符]

终极指南&#xff1a;揭秘LIEF二进制格式识别算法的实现原理 &#x1f50d; 【免费下载链接】LIEF LIEF - Library to Instrument Executable Formats (C, Python, Rust) 项目地址: https://gitcode.com/gh_mirrors/li/LIEF LIEF&#xff08;Library to Instrument Exec…...

vue 求助

这个浅灰色的背景框怎么改啊&#xff0c;没招了...

3步搞定音乐标签混乱问题的终极解决方案

3步搞定音乐标签混乱问题的终极解决方案 【免费下载链接】music-tag-web 音乐标签编辑器&#xff0c;可编辑本地音乐文件的元数据&#xff08;Editable local music file metadata.&#xff09; 项目地址: https://gitcode.com/gh_mirrors/mu/music-tag-web 你是否曾为音…...

Shell脚本进阶:如何用while循环处理未知次数的任务(避坑指南)

Shell脚本进阶&#xff1a;while循环处理未知次数任务的实战艺术 在Linux系统管理和自动化运维领域&#xff0c;Shell脚本是不可或缺的利器。当我们面对需要重复执行但次数未知的任务时&#xff0c;while循环展现出其独特的价值。与for循环不同&#xff0c;while循环不依赖预先…...

Windows 11系统优化终极指南:如何用Win11Debloat让你的电脑重获新生

Windows 11系统优化终极指南&#xff1a;如何用Win11Debloat让你的电脑重获新生 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to dec…...

基于IEEE33节点的节点碳势计算与可视化 摘要:代码主要是基于IEEE33节点这个标准算例

基于IEEE33节点的节点碳势计算与可视化 摘要&#xff1a;代码主要是基于IEEE33节点这个标准算例&#xff0c;然后对各个节点碳势进行了逐一的计算&#xff0c;计算完毕后&#xff0c;通过MATLAB编程&#xff0c;对各个节点的碳势进行了可视化&#xff0c;非常清晰的一个代码&am…...

回归分析中的t检验、F检验和相关系数检验:如何选择与解读(附Python代码示例)

回归分析中的t检验、F检验和相关系数检验&#xff1a;如何选择与解读&#xff08;附Python代码示例&#xff09; 在数据分析的实际工作中&#xff0c;回归分析是最基础也最强大的工具之一。无论是预测销售额、分析用户行为&#xff0c;还是评估营销效果&#xff0c;回归模型都能…...

Open UI5 源代码解析之884:OverflowToolbarAssociativePopover.js

源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.m\src\sap\m\OverflowToolbarAssociativePopover.js OverflowToolbarAssociativePopover.js 深度解析 文件定位与整体价值 OverflowToolbarAssociativePopover.js 是 sap.m 库里一个非常典型的内部增强组…...

OpenClaw开源贡献:为gemma-3-12b-it开发并共享自定义技能

OpenClaw开源贡献&#xff1a;为gemma-3-12b-it开发并共享自定义技能 1. 为什么选择为gemma-3-12b-it开发技能 去年冬天第一次接触OpenClaw时&#xff0c;我就被它的设计理念吸引了——一个真正能在本地运行的AI智能体框架。当时我正为重复性的数据清洗工作头疼&#xff0c;而…...