C语言——结构体

目录

一、结构体的基本概念

[1.1 结构体的定义](#1.1 结构体的定义)

[1.2 结构体变量的声明](#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
相关推荐
PEI0420 分钟前
MVCC(多版本并发控制)
java·开发语言·数据库
天选之女wow27 分钟前
【代码随想录算法训练营——Day4】链表——24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07.链表相交、142.环形链表II
数据结构·算法·leetcode·链表
胡萝卜3.029 分钟前
数据结构初阶:树的相关性质总结
数据结构·二叉树·性质·二叉树的性质
KarrySmile32 分钟前
Day12--HOT100--23. 合并 K 个升序链表,146. LRU 缓存,94. 二叉树的中序遍历
数据结构·链表·二叉树·递归·hot100·lru·灵茶山艾府
熊猫钓鱼>_>43 分钟前
2025反爬虫之战札记:从robots.txt到多层防御的攻防进化史
开发语言·c++·爬虫
牛十二1 小时前
mac-intel操作系统go-stock项目(股票分析工具)安装与配置指南
开发语言·前端·javascript
励志不掉头发的内向程序员1 小时前
从零开始的python学习——文件
开发语言·python·学习
恒森宇电子有限公司1 小时前
IP5326_BZ 支持C同口输入输出的移动电源芯片 2.4A的充放电电流 支持4LED指示灯
c语言·开发语言·单片机
曼巴UE52 小时前
UE5.3 C++ 接口初步使用
开发语言·jvm·c++
奔跑的石头_2 小时前
GO语言的主要语法和特性
开发语言