news 2026/7/5 14:46:23

C语言 结构体(上)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言 结构体(上)

1.什么是结构体?

C 语言内置类型 例如:int/char/float只能保存单一数据,而结构体(struct)是一种自定义复合数据类型,可以把多个不同类型、相关联的数据当作一个整体

比如描述一个学生:姓名、年龄、分数、性别,这些信息属于同一个对象,用结构体统一存放。

结构体的成员可以是:标量,数组,指针,甚至是结构体

struct peo { char name[10]; int age; char sex[5]; }; struct Stu { struct peo p; int score; char tele[20]; };

2.结构体语法定义及初始化

结构体语法定义

struct 结构体名 { 类型1 成员名1; 类型2 成员名2; ... };

注意:不能缺少分号。

示例:定义学生结构体:

// 定义Student结构体类型 struct Stu { char name[20]; // 姓名,字符数组 int age; // 年龄 float score; // 分数 char gender[5]; // 性别 };

这里的 struct Stu 是结构体类型。

这里还有匿名结构体(没有结构体名字,且只能当场使用)

struct { int math; int english; } score;

初始化

struct peo { char name[10]; int age; char sex[5]; }; int main() { struct peo p = {"zhangsan",19,"male"}; return 0; }

结构体未完全初始化

struct Student s = {"小刚"};

未初始化部分自动初始化成0

嵌套结构体初始化

struct peo { char name[10]; int age; char sex[5]; }; struct Stu { struct peo p; int score; char tele[20]; }; int main() { struct Stu s = { {"zhangsan",19,"male"},20,"12366779087"}; return 0; }

3.结构体成员访问

.运算符

struct peo p = {"zhangsan",19,"male"}; printf("%s %d %s", p.name, p.age, p.sex);

字符串不能直接=赋值,要用strcpy

->运算符

struct peo p = { "zhangsan",19,"male" }; struct peo* adr = &p; printf("%s %d %s", adr->name ,adr->age, adr->sex);

4.结构体传参

值传递

void print1(struct peo p) { printf("%s %d %s", p.name, p.age, p.sex); }

地址传递

void print2(struct peo *p) { printf("%s %d %s", p->name, p->age, p->sex); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 14:45:35

跨平台macOS组件下载神器:gibMacOS完全指南

跨平台macOS组件下载神器:gibMacOS完全指南 【免费下载链接】gibMacOS Py2/py3 script that can download macOS components direct from Apple 项目地址: https://gitcode.com/gh_mirrors/gi/gibMacOS 在跨平台环境中获取macOS安装文件一直是个技术难题&…

作者头像 李华
网站建设 2026/7/5 14:45:15

深耕 XR 安卓底软开发:Framework 定制、渲染优化与系统稳定性实战

前言 元宇宙、空间计算和物联网硬件正在以肉眼可见的速度落地。VR 头盔、AR 眼镜、MR 空间设备逐渐进入量产阶段,但这些设备跟我们平常用的手机、平板并不一样。XR 头戴设备是异形的嵌入式终端:双屏且异构、对空间渲染算力要求极高、传感器并发多路、姿态感知要做到近乎实时…

作者头像 李华
网站建设 2026/7/5 14:43:40

TVA对具身智能领域的核心技术支撑(20)

前沿技术介绍:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,属于“物理AI” 领域的一种全新技术形态,完成了从“虚拟世界”到“…

作者头像 李华
网站建设 2026/7/5 14:40:30

不同进程的线程切换**不一定引起进程切换**,但**必然涉及进程上下文切换(即进程切换)**——这里需要明确概念辨析

这个说法是错误的。 不同进程的线程切换不一定引起进程切换,但必然涉及进程上下文切换(即进程切换)——这里需要明确概念辨析: ✅ 线程是调度的基本单位,进程是资源分配的基本单位。✅ 同一进程内的多个线程共享地址空…

作者头像 李华
网站建设 2026/7/5 14:37:08

智慧职教自动化学习助手:让在线课程学习更高效

智慧职教自动化学习助手:让在线课程学习更高效 【免费下载链接】auto-play-course 简单好用的刷课脚本[支持平台:职教云,智慧职教,资源库] 项目地址: https://gitcode.com/gh_mirrors/hc/auto-play-course 在数字化教育时代,职业教育平台的在线课…

作者头像 李华