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

C语言——结构体

目录

一、结构体的基本概念

1.1 结构体的定义

1.2 结构体变量的声明

二、结构体成员的访问

三、结构体数组

四、结构体指针


一、结构体的基本概念

在 C 语言中,结构体(struct)是一种自定义数据类型,它允许将不同类型的数据项组合在一起,形成一个逻辑上的整体。结构体在处理复杂数据结构时非常有用,比如表示一个学生的信息、一个日期或者一个图形对象等。

1.1 结构体的定义

结构体的定义使用struct关键字,其基本语法如下:

struct 结构体名 {数据类型 成员1;数据类型 成员2;// 更多成员...
};

例如,定义一个表示学生的结构体:

struct Student {char name[50];int age;float score;
};

 

1.2 结构体变量的声明

定义好结构体后,可以声明该结构体类型的变量。有两种常见的方式:
方式一:先定义结构体,再声明变量

struct Student stu1, stu2;

方式二:在定义结构体的同时声明变量

struct Student {char name[50];int age;float score;
} stu1, stu2;

 

二、结构体成员的访问 

结构体成员通过点运算符(.)来访问。例如:

#include <stdio.h>struct Student 
{char name[50];int age;float score;
};int main() 
{struct Student stu1;// 初始化结构体成员strcpy(stu1.name, "张三");stu1.age = 20;stu1.score = 85.5;// 访问并输出结构体成员printf("姓名: %s\n", stu1.name);printf("年龄: %d\n", stu1.age);printf("分数: %.1f\n", stu1.score);return 0;
}

注意:
   1.结构体使用时分为两步: 
     step1.先定义出结构体类型 
     step2.通过类型定义出变量 
   2.相同类型的结构体变量之间可以相互赋值 
   3.结构体类型的形参一般设计为指针类型,原因是指针类型传参时大小固定;如果是结构体类型变量,变量的大小取决于结构体类型大小

三、结构体数组

结构体数组是由多个相同结构体类型的元素组成的数组。例如,定义一个包含多个学生信息的结构体数组:

struct Student students[3] = {{"张三", 20, 85.5},{"李四", 21, 90.0},{"王五", 19, 78.5}};

四、结构体指针

结构体指针是指向结构体变量的指针。

struct Student *p = &stu;

通过结构体指针访问成员有两种方式:
方式一:先解引用指针,再用点运算符

(*指针变量名).成员名
(*p).name

方式二:使用箭头运算符(->

指针变量名->成员名
p -> name
http://www.xdnf.cn/news/14600.html

相关文章:

  • 深入剖析Spring Cloud Sentinel,如何实现熔断降级,请求限流
  • C++ 学习 网络编程 2025年6月17日19:56:47
  • MySQL的Sql优化经验总结
  • 浅谈开发者重构的时机选择
  • 如何确定驱动480x320分辨率的显示屏所需的MCU主频
  • DBeaver数据库管理工具的简介、下载安装与优化配置
  • [IMX][UBoot] 02.源码目录
  • Python格式化工具推荐
  • Java中final修饰符
  • 第五章:执行计划分析 - 读懂MySQL的执行策略
  • 一款完美适配mobile、pad、web三端的博客网站UI解决方案
  • 《单光子成像》第六章 预习2025.6.15
  • 【驱动设计的硬件基础】I²C
  • 数据质量-如何构建高质量的大模型数据集
  • Understanding Human Hands in Contact at Internet Scale
  • Python基于Flask的医疗问句中的实体识别算法的研究(附源码,文档说明)
  • 【Dify系列】【Dify 核心功能】【应用类型】【五】【工作流】
  • C++ new知识点详解
  • 调和级数 敛散性
  • 一些杂想20250615
  • SAP顾问职位汇总(第24周)
  • 【Lean4编程入门】 Lean 4 中的 `inductive` 类型定义注解例子解析
  • 电商数据采集的技术分享
  • 【Bug:docker】--docker的wsl版本问题
  • 人工智能-准确率(Precision)、召回率(Recall) 和 F1 分数
  • 1、Java基础语法通关:从变量盒子到运算符魔法
  • NGINX Google Performance Tools 模块`ngx_google_perftools_module`
  • Mkdocs 阅读时间统计插件
  • 【第四十周】眼动追踪基础
  • 【C/C++】内核开发之进程调度大纲