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

C语言-构造数据类型

1、构造数据类型

        结构体、共用体、枚举。

2、结构体

        1、结构体的定义

                结构体是一个自定义的复合数据类型,它允许将不同类型的数据组合在一起。

struct 结构体名
{数据类型1 成员变量1;数据类型2 成员变量2;数据类型3 成员变量3;数据类型4 成员变量4;
}
        2、结构体变量的定义

                数据类型 变量;

        3、结构体的初始化

                1、全部初始化

struct student s = {"zhangsan", 'm', 19, 100};

                2、局部初始化

struct student s = {.name = "zhangsan",.score = "100",
};
        4、结构体元素的访问

                结构体访问成员变量最终类型由成员变量决定

                结构体变量访问成员变量: .

                结构体指针访问成员变量: —>

        5、结构体的存储:

                内存对齐

                        结构体变量只能存储在内存地址为自身基本类型长度整数倍的内存单元

                        结构体整形的大小必须为最大类型长度的整数倍

        6、结构体数组

                数组类型 数组名[元素个数];

#include <stdio.h>struct Student {char name[50];int age;
};// 函数:通过指针传递结构体数组
void printStudents(struct Student *students, int size) {for (int i = 0; i < size; i++) {printf("Student %d: Name = %s, Age = %d\n", i+1, students[i].name, students[i].age);}
}int main() {// 定义一个结构体数组struct Student students[3] = {{"Alice", 20},{"Bob", 22},{"Charlie", 21}};// 调用函数,传递结构体数组printStudents(students, 3);return 0;
}

3、共用体

        union

                共用体与结构体定义和元素访问都一致

                结构体成员变量空间都是独立的,共用体成员变量空间是共享的

        内存大小端

                内存低地址存放低数据位称为小端

                内存低地址存放高数据位称为大端

4、枚举

        enum

        1、枚举的定义
enum Weekday {Sunday,    // 默认为 0Monday,    // 默认为 1Tuesday,   // 默认为 2Wednesday, // 默认为 3Thursday,  // 默认为 4Friday,    // 默认为 5Saturday   // 默认为 6
};

        枚举常量第一个值默认为0,后续枚举常量的值默认为前一个枚举常量的值+1

        2、枚举的使用
#include <stdio.h>enum Weekday {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
};int main() {enum Weekday today;today = Wednesday; // 设置枚举值为 Wednesdayif (today == Wednesday) {printf("Today is Wednesday.\n");}return 0;
}

相关文章:

C语言-构造数据类型

1、构造数据类型 结构体、共用体、枚举。 2、结构体 1、结构体的定义 结构体是一个自定义的复合数据类型&#xff0c;它允许将不同类型的数据组合在一起。 struct 结构体名 {数据类型1 成员变量1;数据类型2 成员变量2;数据类型3 成员变量3;数据类型4 成员变量4; } 2、结构体变…...

鸿蒙next 自定义日历组件

效果图预览 20250124-113957 使用说明 1.选择日期左右箭头&#xff0c;实现每月日历切换&#xff0c;示例中超出当前月份&#xff0c;禁止进入下一月&#xff0c;可在代码更改 2.日历中显示当前选择的日期&#xff0c;选中的日期颜色可自定义 3.日历中可展示历史记录作为数据…...

【express-generator】08-路由重定向

前言 通过前面两篇文章的讲解&#xff0c;我们已经介绍完第二阶段的前两点&#xff0c;本篇介绍第三点&#xff1a;路由重定向。 1. 路由重定向概述 路由重定向是指在服务器端将客户端的请求从一个 URL 重定向到另一个 URL 的过程。这通常通过 HTTP 状态码&#xff08;如 30…...

搭建Spring Boot开发环境

JDK&#xff08;1.8及以上版本&#xff09; Apache Maven 3.6.0 修改settings.xml 设置本地仓库位置 <localRepository>D:/repository</localRepository> 设置远程仓库镜像 <mirror><id>alimaven</id><name>aliyun maven</name&…...

Spatial Group-wise Enhance (SGE) module

来源&#xff1a; [1905.09646] Spatial Group-wise Enhance: Improving Semantic Feature Learning in Convolutional Networks 相关工作&#xff1a; #GroupedFeatures #AttentionModels 创新点&#xff1a; 贡献&#xff1a; 提出了一种轻量级的SGE模块&#xff0c;能够…...

二叉搜索树中的搜索(力扣700)

首先介绍一下什么是二叉搜索树。 二叉搜索树是一个有序树&#xff1a; 若它的左子树不空&#xff0c;则左子树上所有结点的值均小于它的根结点的值&#xff1b;若它的右子树不空&#xff0c;则右子树上所有结点的值均大于它的根结点的值&#xff1b;它的左、右子树也分别为二叉…...

记录让cursor帮我给ruoyi-vue后台管理项目整合mybatis-plus

自己整合过程中会出现 work.web.exception.GlobalExceptionHandler :100 | 请求地址/admin/device/install/detail/1,发生未知异常. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.fire.mapper.DeviceInstallMapper.selectById at o…...

【可实战】Linux 系统扫盲、 Shell扫盲(如何写一个简单的shell脚本)

一、Linux系统扫盲 1.Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议 2.Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。 目前市面上较知名的发行版有&#xff1a;Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等…...

sqlzoo答案4:SELECT within SELECT Tutorial

sql练习&#xff1a;SELECT within SELECT Tutorial - SQLZoo world表&#xff1a; namecontinentareapopulationgdpAfghanistanAsia6522302550010020343000000AlbaniaEurope28748283174112960000000AlgeriaAfrica238174137100000188681000000AndorraEurope46878115371200000…...

【fly-iot飞凡物联】(20):2025年总体规划,把物联网整套技术方案和实现并落地,完成项目开发和课程录制。

前言 fly-iot飞凡物联专栏&#xff1a; https://blog.csdn.net/freewebsys/category_12219758.html 1&#xff0c;开源项目地址进行项目开发 https://gitee.com/fly-iot/fly-iot-platform 完成项目开发&#xff0c;接口开发。 把相关内容总结成文档&#xff0c;并录制课程。…...

Lucene常用的字段类型lucene检索打分原理

在 Apache Lucene 中&#xff0c;Field 类是文档中存储数据的基础。不同类型的 Field 用于存储不同类型的数据&#xff08;如文本、数字、二进制数据等&#xff09;。以下是一些常用的 Field 类型及其底层存储结构&#xff1a; TextField&#xff1a; 用途&#xff1a;用于存储…...

适用于IntelliJ IDEA 2024.1.2部署Tomcat的完整方法,以及笔者踩的坑,避免高血压,保姆级教程

Tips:创建部署Tomcat直接跳转到四 一、软件准备 笔者用的是IntelliJ IDEA 2024.1.2和Tomcat 8.5。之前我使用的是Tomcat 10&#xff0c;但遇到了许多问题。其中一个主要问题是需要使用高于1.8版本的JDK&#xff0c;为此我下载了新的JDK版本&#xff0c;但这又引发了更多的兼容…...

XSS靶场通关详解

前言 这里作者采用phpstudy部署的xss-lab靶场&#xff0c;配置如下&#xff1a; 第一关 进入靶场后寻找页面的传参处&#xff0c;发现url中的name参数传了test给页面&#xff0c;可以在此处进行尝试xss 成功弹窗&#xff01; payload&#xff1a; <script>alert(1)<…...

Excel 技巧15 - 在Excel中抠图头像,换背景色(★★)

本文讲了如何在Excel中抠图头像&#xff0c;换背景色。 1&#xff0c;如何在Excel中抠图头像&#xff0c;换背景色 大家都知道在PS中可以很容易抠图头像&#xff0c;换背景色&#xff0c;其实Excel中也可以抠简单的图&#xff0c;换背景色。 ※所用头像图片为百度搜索&#x…...

备忘-humanplus相关的代码解析

-1: numpy必须为1.20.0&#xff0c;否则会报错&#xff0c;版本冲突0.rlvalue-based: 如q-learning&#xff08;走迷宫&#xff09;&#xff0c;对当前状态下作出的动作进行价值计算&#xff0c;通过贪婪策略穷尽所有可能选择最佳state-action,但是对于连续的动作空间&#x…...

青少年编程与数学 02-008 Pyhon语言编程基础 01课题、语言概要

青少年编程与数学 02-008 Pyhon语言编程基础 01课题、语言概要 一、榜一大哥起源与早期发展版本演进与社区壮大应用领域的拓展编程语言排行榜的常客结语 二、当前排行三、出色表现四、易学易用五、特色显著六、资源丰富初学者资源中高级学习资源在线编程学习平台 课题摘要:本文…...

XSS (XSS)分类

XSS &#xff08;XSS&#xff09; 概要 XSS全称为Cross Site Scripting&#xff0c;为了和CSS分开简写为XSS&#xff0c;中文名为跨站脚本。该漏洞发生在用户端&#xff0c;是指在渲染过程中发生了不在预期过程中的JavaScript代码执行。XSS通常被用于获取Cookie、以受攻击者的…...

[Linux]el8安全配置faillock:登录失败达阈值自动锁定账户配置

前言 本篇文章的配置仅使用于el8版本的Linux&#xff0c;目前已在centos8、BCLinux8上验证成功&#xff0c;其他版本系统是否可行还得考查。 el8中管理用户登录失败锁定账户所用的模块是faillock.so&#xff0c;如果想要将配置应用与其他版本的Linux&#xff0c;建议确认Linux…...

最新-CentOS 7安装1 Panel Linux 服务器运维管理面板

CentOS 7安装1 Panel Linux 服务器运维管理面板 一、前言二、环境要求三、在线安装四、离线安装1.点击下面1 Panel官网链接访问下载&#xff0c;如未登录或注册&#xff0c;请登录/注册后下载2.使用将离线安装包上传至目标终端/tem目录下3.进入到/tem目录下解压离线安装包4.执行…...

selenium定位网页元素

1、概述 在使用 Selenium 进行自动化测试时&#xff0c;定位网页元素是核心功能之一。Selenium 提供了多种定位方法&#xff0c;每种方法都有其适用场景和特点。以下是通过 id、linkText、partialLinkText、name、tagName、xpath、className 和 cssSelector 定位元素的…...

5大场景重构AI协作流程:Awesome Claude Skills实战指南

5大场景重构AI协作流程&#xff1a;Awesome Claude Skills实战指南 【免费下载链接】awesome-claude-skills A curated list of awesome Claude Skills, resources, and tools for customizing Claude AI workflows 项目地址: https://gitcode.com/GitHub_Trending/aw/awesom…...

让幻想更真实:Kook Zimage真实幻想Turbo负面提示词使用指南

让幻想更真实&#xff1a;Kook Zimage真实幻想Turbo负面提示词使用指南 1. 为什么负面提示词如此重要 在AI图像生成领域&#xff0c;我们常常把注意力放在如何写好正面提示词上&#xff0c;却忽略了负面提示词的重要性。负面提示词就像一位隐形的编辑&#xff0c;默默剔除那些…...

从仿真到现实:聊聊PIN二极管模型在有源衰减器设计中的那些“坑”与优化思路

从仿真到现实&#xff1a;PIN二极管模型在有源衰减器设计中的关键挑战与工程优化 在射频电路设计中&#xff0c;有源衰减器的性能直接影响着系统的动态范围和信号质量。当我们从仿真环境转向实际电路实现时&#xff0c;PIN二极管模型的准确性往往成为决定成败的关键因素。许多工…...

PS软件插件开发思维:为视频编辑流程注入AI字幕能力

PS软件插件开发思维&#xff1a;为视频编辑流程注入AI字幕能力 不知道你有没有过这样的经历&#xff1a;辛辛苦苦剪完一个视频&#xff0c;到了加字幕这一步&#xff0c;整个人都蔫了。要么是手动敲字敲到手抽筋&#xff0c;要么是自动生成的字幕时间轴对不上&#xff0c;还得…...

保姆级教程:在Ubuntu 24.04上配置Ollama服务并开机自启(附systemctl管理命令)

在Ubuntu 24.04上构建企业级Ollama服务&#xff1a;从零到生产环境部署指南 当大型语言模型&#xff08;LLM&#xff09;从开发环境走向生产部署时&#xff0c;稳定性与可维护性成为首要考量。本文将带您完成Ollama服务在Ubuntu 24.04上的全生命周期配置&#xff0c;涵盖服务架…...

从YOLO到DeepLab:盘点CV任务中那些‘神级’特征融合技巧与避坑指南

从YOLO到DeepLab&#xff1a;盘点CV任务中那些‘神级’特征融合技巧与避坑指南 在计算机视觉领域&#xff0c;特征融合技术就像一位隐形的调音师&#xff0c;默默协调着神经网络中不同层次、不同来源的信息流。当你在目标检测任务中遇到小目标识别率低的问题&#xff0c;或在图…...

Docker容器中运行Windows系统的突破性企业级解决方案:架构解析与部署实践

Docker容器中运行Windows系统的突破性企业级解决方案&#xff1a;架构解析与部署实践 【免费下载链接】windows Windows inside a Docker container. 项目地址: https://gitcode.com/GitHub_Trending/wi/windows 在当今云原生和容器化技术快速发展的背景下&#xff0c;如…...

C++动态内存/内存管理

文章目录 前言 一、内存分区 二、C 语言动态内存&#xff08;标准库函数&#xff09; 1.核心函数 2.代码示例 3.关键注意点 三、C 动态内存&#xff08;关键字 / 操作符&#xff09; 1.核心用法 &#xff08;1&#xff09;单个对象 &#xff08;2&#xff09;数组对象…...

LeetCodehot100-25 K 个一组翻转链表

class Solution { public:ListNode* reverseKGroup(ListNode* head, int k) {if (head nullptr || k 1) return head;ListNode dummy(0);dummy.next head;ListNode* prev &dummy; // 指向待反转组的前一个节点while (true) {// 检查剩余节点是否够k个ListNode* tail …...

Spring AI 实战系列(二):ChatClient封装,告别大模型开发样板代码

系列栏目&#xff1a;Spring AI Spring AI 实战教程&#xff08;一&#xff09;入门示例 Spring AI 实战系列&#xff08;二&#xff09;&#xff1a;ChatClient封装&#xff0c;告别大模型开发样板代码 Spring AI 实战系列&#xff08;三&#xff09;&…...