C语言中的结构体
文章目录
- 前言
- 一、结构体是什么?
- 二、结构体的定义
- 三、结构体的初始化
- 四、结构体的嵌套
- 五、结构体数组
- 1结构体数组的定义:
- 六、结构体指针
一、结构体是什么?
我们知道一群类型相同的数据组合到一起是数组,那一群不同类型的数据组合到一起就是结构体。
二、结构体的定义
#include<stdio.h>
int main(){
struct student {
int id;
char name[100];
int age;
};
//上面的我们就定义了一个student结构体,其中元素有id,name,age
}
三、结构体的初始化
1.普通初始化
#include<stdio.h>
int main(){
struct people
{
char name[100];//姓名
int age;//年龄
char sex;//性别
};
struct people person1 = {"高欢",50,'M'};
printf("%s\n", person1.name);
printf("%d\n", person1.age);
printf("%c\n", person1.sex);
}
运行结果:

2.指定成员变量初始化
#include<stdio.h>
int main(){
struct people
{
char name[100];//姓名
int age;//年龄
char sex;//性别
};
struct person2 = {
.sex = 'F',
.age = 20,
.name = "秦良玉"
};
printf("%s\n", person2.name);
printf("%d\n", person2.age);
printf("%c\n", person2.sex);
}
运行结果:

四、结构体的嵌套
1.结构体里面套了一个结构体,就是结构体中有结构体类型的元素。
2.里面的结构体需要定义在前面,而外层的结构体定义在后面。
嵌套结构体的定义:
//内层结构体
struct birthday {
int year;
int month;
int day;
};
//外层结构体
struct student {
int id;
char name[100];
int age;
struct birthday date;
};
嵌套结构体的代码案例:
#include<stdio.h>
int main(){
//结构体的嵌套其实就是结构体中的元素为结构体
//里面的结构体需要先定义,外层结构体需要后定义。
struct birthday
{
int year;
int month;
int day;
};
struct student
{
int id;
char name[200];
int age;
//结构体元素
struct birthday date;
};
//普通初始化
struct student s1 = {1,"李如松",20,2004,5,7};
printf("%d\n", s1.id);
printf("%s\n", s1.name);
printf("%d\n", s1.age);
printf("%d\n", s1.date.year);
printf("%d\n", s1.date.month);
printf("%d\n", s1.date.day);
//2.指定成员变量初始化
struct student s2 =
{
.id = 2,
.name = "斛律光",
.age = 18,
.date.year = 2006,
.date.month = 12,
.date.day = 10
};
printf("%d\n", s2.id);
printf("%s\n", s2.name);
printf("%d\n", s2.age);
printf("%d\n", s2.date.year);
printf("%d\n", s2.date.month);
printf("%d\n", s2.date.day);
}
运行结果:

五、结构体数组
和变量一样,多个同类型的变量组合在一起就形成了数组,那多个同类型的结构体组合在一起也形成了结构体数组。
1结构体数组的定义:
struct student
{
int id;
char name[200];
int age;
};
struct student s[5];//定义了一个长度为5的结构体数组
代码案例:
#include<stdio.h>
int main(){
//结构体数组:本质上是一个数组,只不过其数组中的元素为结构体
struct student
{
int id;
char name[200];
int age;
};
struct student s[10];
s[0].id = 1;
s[0].age = 18;
scanf("%s", &s[0].name);//手动输入name的值。
printf("%d\n", s[0].id);
printf("%s\n", s[0].name);
printf("%d\n", s[0].age);
}
运行结果:

六、结构体指针
结构体指针,与函数指针一样,本质上是指针,只不过该指针指向的变量为结构体类型
struct student
{
int id;
char name[200];
int age;
};
struct student s1 = {1,"结构体指针",100};
struct student *p = &s1;//结构体指针的定义
代码案例:
#include<stdio.h>
int main(){
//结构体指针:本质是一个指针其指向的类型为结构体类型的变量
struct student
{
int id;
char name[200];
int age;
};
struct student s1 = {1,"结构体指针",100};
struct student *p = &s1;
//结构体指针第一种输出结果体内容的方式
printf("%d\n", (*p).id);
printf("%s\n", (*p).name);
printf("%d\n", (*p).age);
//结构体指针第二种输出结果体内容的方式
printf("%d\n", p->id);
printf("%s\n", p->name);
printf("%d\n", p->age);
}
运行结果:

相关文章:
C语言中的结构体
文章目录 前言一、结构体是什么?二、结构体的定义三、结构体的初始化四、结构体的嵌套五、结构体数组 1结构体数组的定义:六、结构体指针 一、结构体是什么? 我们知道一群类型相同的数据组合到一起是数组,那一群不同类型的数据组…...
3.qml与c++模块化开发
目录 模块化开发封装c模块并使用封装qml模块并使用 模块化开发 什么是模块化开发呢? 举个例子: 我们有一台台式电脑,我们台式电脑有显卡,内存,磁盘,cpu,键盘,鼠标等 你可以将这些部…...
怎么使用github上传XXX内所有文件
要将 目录中的所有文件上传到 GitHub,你可以按照以下步骤进行: 创建一个新的 GitHub 仓库 登录到你的 GitHub 账户。 点击右上角的加号(),选择 “New repository”。 输入仓库名称(例如:202407…...
合作伙伴中心Partner Center中添加了Copilot预览版
目录 一、引言 二、Copilot 功能概述 2.1 Copilot 简介 2.2 Copilot 的核心功能 2.3 Copilot 的访问和使用 三、Copilot 的使用方法 3.1 Copilot 功能区域 3.2 Copilot 使用示例 3.2.1 编写有效提示 3.2.2 使用反馈循环 四、负责任的人工智能 4.1 Copilot 结果的可…...
Navidrome音乐服务器 + 音流APP = 释放你的手机空间
20240727 By wdhuag 目录 前言: 参考: Navidrome音乐服务器 Demo试用: 支持多平台: 下载: 修改配置: 设置用NSSM成服务启动: 服务器本地访问网址: 音流 歌词封面API&am…...
Prometheus安装部署
文章目录 1.Prometheus(普罗米修斯)安装部署1.1部署环境准备1.2部署prometheus1.3主机数据展示 2.Grafana安装部署2.1部署Grafana2.2配置Grafana数据源2.2配置Grafana仪表板 3.AlertManager安装部署3.1部署alertmanager3.2告警邮件发送配置3.3测试邮件告警效果3.4自定义邮件告警…...
算法(查找算法---二分查找/索引查找/哈希表查找)
二、查找算法 什么是查找算法: 在一个数据序列中,查找某个数据是否存在或存在的位置,在实际开发过程中使用的频率非常高,例如对数据常见的操作有增、删、改、查,增加数据时需要查询新增加的数据是否重复,…...
SQL labs-SQL注入(二)
环境搭建参考 SQL注入(一) 一,SQL labs-less2。 http://192.168.61.206:8001/Less-2/?id-1 union select 1,2,group_concat(username , password) from users-- 与第一关没什么太大的不同,唯一区别就是闭合方式为数字型。 二…...
go 语言踏出第一步
1、下载Go语言安装包:在官方网站(https://golang.org/dl/)上下载适合你操作系统的Go语言安装包。选择一个tar.gz格式的包。 2、解压安装包:打开终端,进入下载目录,并使用以下命令解压安装包: ta…...
SpringBoot-21 SpringBoot微服务的发布与部署(3种方式)
基于 SpringBoot 的微服务开发完成之后,现在到了把它们发布并部署到相应的环境去运行的时候了。 SpringBoot 框架只提供了一套基于可执行 jar 包(executable jar)格式的标准发布形式,但并没有对部署做过多的界定,而且为…...
在occluded Person Re-ID中,选择clip还是ViT作为backbone?
在遮挡行人再识别(Occluded Person Re-Identification, Occluded Person Re-ID)任务中,使用CLIP(Contrastive Language-Image Pre-Training)作为backbone和使用Vision Transformer(ViT)作为back…...
Linuxnat网络配置
📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 ☁️运维工程师的职责:监…...
77.WEB渗透测试-信息收集-框架组件识别利用(1)
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:76.WEB渗透测试-信息收集- WAF、框架组件识别(16) javaÿ…...
ExcelJS:轻松实现Excel文件的读取、操作与写入
文章目录 发现宝藏1. 简介2. 安装3. 创建工作簿4. 设置工作簿属性5. 添加工作表6.删除工作表7.访问工作表8. 列操作9. 行操作10. 单元格操作 发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝…...
Java 多线程技术详解
文章目录 Java 多线程技术详解目录引言多线程的概念为什么使用多线程?多线程的特征多线程的挑战 多线程的实现方式3.1 继承 Thread 类示例代码: 3.2 实现 Runnable 接口示例代码: 3.3 使用 Executor 框架示例代码: 3.4 使用 Calla…...
一份简单实用的MATLAB M语言编码风格指南
MATLAB M语言编码风格指南 1. 文件命名2. 函数命名3. 注释4. 变量命名5. 布局、注释和文档6. 代码结构7. 错误处理8. 性能优化9. 格式化输出 MATLAB M文件的编码规范对于确保代码的可读性、可维护性和一致性非常重要。下面是一份MATLAB M语言编码规范的建议,可以作为…...
ubuntu 环境下soc 使用qemu
构建vexpress-a9的linux内核 安装依赖的软件 sudo apt install u-boot-tools sudo apt install gcc-arm-linux-gnueabi sudo apt install g-arm-linux-gnueabi sudo apt install gcc#编译内核 下载 linux-5.10.14 linux-5.10.148.tar.gz 配置 sudo tar -xvf linux-5.10.1…...
Centos安装、迁移gitlab
Centos安装迁移gitlab 一、下载安装二、配置rb修改,起服务。三、访问web,个人偏好设置。四、数据迁移1、查看当前GitLab版本2、备份旧服务器的文件3、将上述备份文件拷贝到新服务器同一目录下,恢复GitLab4、停止新gitlab数据连接服务5、恢复备…...
【Python机器学习】朴素贝叶斯——使用Python进行文本分类
目录 准备文本:从文本中构建词向量 训练算法:从词向量计算概率 测试算法:根据现实情况修改分类器 准备数据:文档词袋模型 要从文本中获取特征,需要先拆分文本。这里的特征是来自文本的词条,一个词条是字…...
【linux】Shell脚本三剑客之grep和egrep命令的详细用法攻略
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用
阻止除自定义标签之外的所有标签 先输入一些标签测试,说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时(如通过点击或键盘导航&…...
在Zenodo下载文件 用到googlecolab googledrive
方法:Figshare/Zenodo上的数据/文件下载不下来?尝试利用Google Colab :https://zhuanlan.zhihu.com/p/1898503078782674027 参考: 通过Colab&谷歌云下载Figshare数据,超级实用!!࿰…...
华为OD机考- 简单的自动曝光/平均像素
import java.util.Arrays; import java.util.Scanner;public class DemoTest4 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint[] arr Array…...
Linux系统:进程间通信-匿名与命名管道
本节重点 匿名管道的概念与原理匿名管道的创建命名管道的概念与原理命名管道的创建两者的差异与联系命名管道实现EchoServer 一、管道 管道(Pipe)是一种进程间通信(IPC, Inter-Process Communication)机制,用于在不…...
