[C语言]结构体

news/2024/10/12 14:17:05/

1.什么是结构体

结构是多种类型的数据的集合。。且每个结构成员都有名字,因此当使用特定的成员时需要指明结构体成员的名字。

2.结构体的声明

以学生的数据为例:

	struct student      //student结构名{char name;      //name结构体成员名int height;     //height结构体成员名float weight;   //weight结构体成员名char id[20]	    //id结构体成员名}part1,part2;       //part1,part2结构体变量名

student是结构体的名字称为结构名。

name,height,weight,id都是结构体成员它们可以是不同类型也可以是相同类型。

part1,part2都是定义的结构体变量名,它的类型为,''struct student'.

可以在结构体声明时定义结构体变量名,也可以像下方一样单独定义。

 struct student part3;

3.结构体成员的访问

 1.结构体成员和”.“运算符

#include <stdio.h>
struct student
{char name[30];int height;float weight;char id[20];
};
int main()
{struct student part1 = { "王二",180,75.5,"20241011123456" };printf("%s\n", part1.name);printf("%d\n", part1.height);printf("%f\n", part1.weight);printf("%s\n", part1.id);return 0;
}

运行结果 :

可以看到通过”part1.name“这样的方式就能访问到结构体中的name成员 。

2.结构体成员和”->“运算符

struct student
{char name[30];int height;float weight;char id[20];
};
void stu1(struct student* str)
{printf("%s\n", str->name);printf("%d\n", str->height);printf("%f\n", str->weight);printf("%s\n", str->id);
}
int main()
{struct student part1 = { "王二",180,75.5,"20241011123456" };stu1(&part1);return 0;
}

运行结果:

 

可以看到用结构体指针通过”->“运算符也能访问到结构体成员。

 4.具有结构体成员的结构体

1.结构体自己调用自己

struct Node
{int data;struct Node* next;
};

可以看到结构体中的一个成员为指向它自身的指针,类型为struct Node*

2.结构体嵌套

struct stu1
{char name[20];int id;
};
struct stu2
{char name[20];int id;struct stu1 s1;
};

 可以看到结构体stu2中有一个成员的类型是struct stur1 它的变量名是s1.

 


http://www.ppmy.cn/news/1537903.html

相关文章

创建docker虚拟镜像,创建启动服务脚本

进入系统命令服务目录 编辑服务 [Unit] DescriptionDocker Application Container Engine Documentationhttps://docs.docker.com Afternetwork-online.target firewalld.service Wantsnetwork-online.target [Service] Typenotify ExecStart/usr/bin/dockerd ExecReload/bin/…

[spring]Spring AOP 及 代理模式

文章目录 一. AOP介绍二. AOP使用Spring AOP核心概念切点连接点通知切面 通知类型PointCut切面优先级Order切点表达式execution(....)annotation自定义注解使用annotation添加自定义注解 三. 代理模式 一. AOP介绍 Spring框架两大核心: IoCAOP 二. AOP使用 引入依赖 &…

flutter打包后如何看打印信息

一、确保设备已连接并被识别 首先&#xff0c;确保你的手机已经通过 USB 连接到电脑&#xff0c;并且 USB 调试&#xff08;Android&#xff09;或开发者模式&#xff08;iOS&#xff09;已经启用。在终端输入以下命令&#xff0c;查看设备是否已被识别&#xff1a; flutter d…

时序逻辑-延一拍/打一拍?

一、时序逻辑中的同步复位和异步复位 同步复位的D触发器 同步复位的D触发器中的“同步”是和工作时钟同步的意思&#xff0c;也就是说&#xff0c;当时钟的上升沿&#xff08;也可以是下降沿&#xff0c;一般习惯上为上升沿触发&#xff09;来到时检测到按键的复位操作才有效&a…

【NoSQL】portswigger NoSQL注入 labs 全解

目录 NoSQL NoSQL 数据库模型 NoSQL 注入的类型 NoSQL 语法注入 检测 MongoDB 中的语法注入 lab1:检测 NoSQL 注入 NoSQL 运算符注入 提交查询运算符 检测 MongoDB 中的运算符注入 lab2:利用 NoSQL 运算符注入绕过身份验证 利用语法注入来提取数据 MongoDB 中的数据…

深入理解 Django 自定义用户模型

1. 引言 Django 作为一个强大的 Web 框架&#xff0c;内置了用户认证系统。然而&#xff0c;实际项目中我们通常需要扩展用户模型&#xff0c;以满足不同的业务需求。Django 提供了继承 AbstractUser 的方式&#xff0c;让我们能够轻松地定制用户模型。本文将通过一个自定义用…

R中线性回归及其权重和截距的计算

以下是您提供的代码的总结和解析&#xff0c;主要聚焦于线性回归及其权重和截距的计算。 代码解析 数据准备&#xff1a; data women使用内置的 women 数据集&#xff0c;该数据集包含了身高和体重的信息。 绘制散点图&#xff1a; plot(women$height, women$weight,xlab &…

用户在网页上输入一个网址,它整个页面响应的流程是什么?

目录 一、流程的大致过程 二、流程的详细分析 1. 浏览器先分析超链接中的URL 2. DNS解析 3. 建立TCP连接 建立连接&#xff08;三次握手&#xff09; HTTP中的请求报文 4. 浏览器发送HTTP请求 5. 服务器处理请求并发送响应 HTTP的响应报文 6. 浏览器接收响应 7. 渲…