C语言基础语法-教案16(从小白到劝退之结构体初阶)

最近给大家争取到一个 深夜福利

保证你在深夜手机刷到 嘎嘎香~

那就是  大流量卡

缺点:月租太便宜 

185GB~

100分钟通话时长~

长期套餐~

畅想自由的气息

流量自由的同时还拥有超长通话,而且免费领取

名额有限,咱们废话不多说直接上图。

感兴趣的家人私我或者直接加微信:lyg15314144781

流量卡

结构体基本概念

C语言提供了众多的基本类型,但现实生活中的对象一般都不是单纯的整型、浮点型或字符串,而是这些基本类型的综合体。比如一个学生,典型地应该拥有学号(整型)、姓名(字符串)、分数(浮点型)、性别(枚举)等不同侧面的属性,这些所有的属性都不应该被拆分开来,而是应该组成一个整体,代表一个完整的学生。

在C语言中,可以使用结构体来将多种不同的数据类型组装起来,形成某种现实意义的自定义的变量类型。结构体本质上是一种自定义类型。

结构体的定义:

struct 结构体标签
{成员1;成员2;...
};
  • 语法:
    • 结构体标签,用来区分各个不同的结构体。
    • 成员,是包含在结构体内部的数据,可以是任意的数据类型。
  • 示例:
// 定义了一种称为 struct node 的结构体类型
struct node
{int a;char b;double c;  
};int main()
{// 定义结构体变量struct node n;
}

结构体初始化

结构体跟普通变量一样,涉及定义、初始化、赋值、取址、传值等等操作,这些操作绝大部分都跟普通变量别无二致,只有少数操作有些特殊性。这其实也是结构体这种组合类型的设计初衷,就是让开发者用起来比较顺手,不跟普通变量产生太多差异。

  • 结构体的定义和初始化。
    • 由于结构体内部拥有多个不同类型的成员,因此初始化采用与数组类似的列表方式。
    • 结构体的初始化有两种方式:①普通初始化;②指定成员初始化。
    • 为了能适应结构体类型的升级迭代,一般建议采用指定成员初始化。
  • 示例:
// 1,普通初始化
struct node n = {100, 'x', 3.14};// 2,指定成员初始化
struct node n = {.a = 100,  // 此处,小圆点.被称为成员引用符.b = 'x',.c = 3.14}
  • 指定成员初始化的好处:
    • 成员初始化的次序可以改变。
    • 可以初始化一部分成员。
    • 结构体新增了成员之后初始化语句仍然可用。

结构体成员引用

结构体相当于一个集合,内部包含了众多成员,每个成员实际上都是独立的变量,都可以被独立地引用。引用结构体成员非常简单,只需要使用一个成员引用符即可:

结构体.成员

示例:

n.a = 200;
n.b = 'y';
n.c = 2.22;
printf("%d, %c, %lf\n", n.a, n.b, b.c);

结构体指针与数组

跟普通变量别无二致,可以定义指向结构体的指针,也可以定义结构体数组。

  • 结构体指针:
struct node  n = {100, 'x', 3.14};
struct node *p = &n;// 以下语句都是等价的
printf("%d\n",   n.a);
printf("%d\n", (*p).a);
printf("%d\n",  p->a);  // 箭头 -> 是结构体指针的成员引用符
  • 结构体数组:
struct node s[5];
s[0].a = 300;
s[0].b = 'z';
s[0].c = 3.45;

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

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

相关文章

JS详解-手写Promise!!!

前言: 针对js的深入理解,作者学习并撰写以下文章,由于理解认知有限难免存在偏差,请大家指正!所有定义来自mdn。 Promise介绍: 对象表示异步操作最终的完成(或失败)以及其结果值. 描…

代码随想录训练营第三十五期|第2天|数组part02|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结

977. 有序数组的平方 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int[] sortedSquares(int[] nums) {int[] res new int[nums.length];int idx nums.length - 1;int left 0;int right nums.length - 1;while (left < right) {if (nums[left] * nu…

为什么JOS操作系统是用C语言实现的,why not高级编程语言?

C的优点 C提供了大量的控制能力&#xff0c;C可以完全控制内存分配与释放。C几乎没有隐藏的代码&#xff0c;几乎可以在阅读C代码的时候想象到对应的RISC-V机器指令是什么。通过C可以直接访问内存&#xff0c;可以读写PTE的bit位或者设备寄存器。使用C会有极少的依赖&#xff…

7天八股速记之Java 后端——Day 1

接口和抽象类的区别 接口抽象类方法抽象方法既可以有抽象方法&#xff0c;也可以有普通方法关键字修饰interfaceabstract定义常量变量只能定义静态常量成员变量子类方法所有方法必须实现实现所有的抽象方法子类继承多继承单继承构造方法不能有构造方法可以有构造方法接口实现只…

C++:逻辑运算符-非与或(19)

!非!a如果a为假&#xff0c;那么当前他就是真&#xff0c;如果a是真&#xff0c;那么他直接就是假&&与a&&ba与b都为真&#xff0c;那么就是真&#xff0c;如果两个里面有一个为假那么就是假||或a||ba或b有一个为真&#xff0c;那么就是真 非&#xff08;!&…

C++ templates: (3)、变量模板

1、普通变量模板 #include <iostream> using namespace std;template<typename T> int g_value 0;int main(){g_value<int> 10;g_value<double> 11;cout << g_value<int> << "," << g_value<double> &l…

【数据结构与算法】力扣 203. 移除链表元素

题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a; head [1,2,6,3,4,5,6], val 6 输出&#xff1a; [1,2,3,4,5]示例 2&#xff1a; 输…

一文弄懂CNN/RNN/GAN/Transformer等架构

1. 引言 本文旨在友好地介绍深度学习架构&#xff0c;包括卷积神经网络&#xff08;CNN&#xff09;、循环神经网络&#xff08;RNN&#xff09;、生成对抗网络&#xff08;GAN&#xff09;、transformer 和 encoder-decoder 架构。 闲话少说&#xff0c;让我们直接开始吧。 …

【OpenCV】图像像素的遍历

1 前言 介绍两种遍历像素的方法&#xff08;非指针、指针&#xff09;。注意&#xff1a;.at() .ptr()的作用、用法。相关API&#xff1a; Mat对象.ptr() Mat对象.at() 2 代码及内容 #include "iostream" #include "opencv2/opencv.hpp"using namespac…

[已解决]OSError: Unable to load weights from pytorch checkpoint file

问题说明&#xff1a; 最近跑代码遇到了一个奇怪的问题&#xff1a; OSError: Unable to load weights from pytorch checkpoint file for /root/.cache/huggingface/transformers/c506559a5367a918bab46c39c79af91ab88846b49c8abd9d09e699ae067505c6.6365d436cc844f2f2b4885…

正则表达式(2)

文章目录 专栏导读1、贪婪与非贪婪2、转义匹配 专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN 数据分析领域优质创作者&#xff0c;专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》&#xff0c;本专栏针对大学生、初级数据分析工程师精…

国外服务器托管需要了解哪些信息

国外服务器托管服务提供了一种在国外租用并管理服务器的方式&#xff0c;适用于需要特定地域服务或对本地法规有特殊要求的企业和个人。那么想要进行国外服务器托管需要了解哪些信息呢?Rak部落小编为您整理发布国外服务器托管相关内容。 以下是一些关于国外服务器托管服务的详…

vue3表单参数校验+正则表达式

这里我们要实现在form表单中对表单项添加参数校验。 校验要求 我们的表单中有用户名、密码、电话号码、邮箱这四个项。 我们设置用户名为3到20位的非空字符 密码为3到25位非空字符 电话号码就用目前用的电话号码正则表达式&#xff0c;要求手机号码以 1 开头&#xff0c;第…

STM32单片机智能电表交流电压电流程序设计(电流 电压互感器TV1005M+TA1005M)

资料下载地址&#xff1a;STM32单片机智能电表交流电压电流程序设计(电流 电压互感器TV1005MTA1005M) 1、摘要 5、基于STM32F103单片机智能电表交流电压电流设计 本设计由STM32单片机核心板电路交流电压电流检测模块电路WIFI模块电路指示灯电路组成。 1、通过电压互感器TV100…

XML --java学习笔记

XML(全称EXtensible Markup Language&#xff0c;可扩展标记语言) 本质是一种数据的格式&#xff0c;可以用来存储复杂的数据结构&#xff0c;和数据关系 XML的特点 XML中的“<标签名>”称为一个标签或一个元素&#xff0c;一般是成对出现的XML中的标签名可以自己定义…

Doris实践——信贷系统日志分析场景的实践应用

目录 前言 一、早期架构演进 1.1 架构1.0 基于Kettle MySQL离线数仓 1.2 架构2.0 基于 Presto / Trino统一查询 二、基于Doris的新一代架构 三、新数仓架构搭建经验 3.1 并发查询加速 3.2 数仓底座建设 四、Doris助力信DolphinScheduler 和 Shell 贷业务场景落地 4.…

如何在 Ubuntu 14.04 上为 Nginx 添加 gzip 模块

简介 网站加载速度取决于浏览器需要下载的文件大小。减小传输文件的大小不仅可以加快网站加载速度&#xff0c;还可以减少需要支付带宽费用的用户的成本。 gzip 是一款流行的数据压缩程序。您可以配置 Nginx 使用 gzip 对其提供的文件进行实时压缩。这些文件在传输到浏览器时…

使用Python实现逻辑回归模型

逻辑回归是一种用于解决分类问题的统计学方法&#xff0c;尤其适用于二分类问题。在本文中&#xff0c;我们将使用Python来实现一个基本的逻辑回归模型&#xff0c;并介绍其原理和实现过程。 什么是逻辑回归&#xff1f; 逻辑回归是一种用于建立因变量与自变量之间关系的统计…

LabVIEW工程师在工作中需要特别注意哪些细节?

LabVIEW是一种图形编程语言&#xff0c;由美国国家仪器&#xff08;National Instruments&#xff0c;简称NI&#xff09;开发&#xff0c;广泛用于数据采集、仪器控制和工业自动化领域。LabVIEW工程师在工作中需要注意的细节颇多&#xff0c;既包括技术层面的&#xff0c;也包…

【Git】命令行使用体验大大优化的方法

Git的优化使用 相信很多人&#xff0c;在使用git作为版本管理工具时都会感受到它的方便&#xff0c;但是也会有一些问题困扰着我们&#xff0c;让我们觉得使用体验不是很好。我在使用git的过程中就发现了几个问题&#xff1a;写commit费时、怎么做多人开发的代码审查等等。今天…