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

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); }
http://www.cnnetsun.cn/news/3162393.html

相关文章:

  • 跨平台macOS组件下载神器:gibMacOS完全指南
  • 深耕 XR 安卓底软开发:Framework 定制、渲染优化与系统稳定性实战
  • TVA对具身智能领域的核心技术支撑(20)
  • 不同进程的线程切换**不一定引起进程切换**,但**必然涉及进程上下文切换(即进程切换)**——这里需要明确概念辨析
  • CCB(Change Control Board,变更控制委员会)是一个由项目干系人代表组成的正式团体
  • 智慧职教自动化学习助手:让在线课程学习更高效
  • 如何高效使用Python无人机地面站:MAVProxy开源工具实践指南
  • 告别传统投屏:scrcpy如何解决Android设备控制的三大痛点
  • Qwen Code新特性来袭:终端支持语音对话
  • TVA推动物理AI的具身智能革命(9)
  • Kubernetes 系列【4】基础概念
  • 医学图像分割神器TotalSegmentator:三步掌握100+解剖结构自动识别
  • AI智能体开发指南:从核心概念到实践应用
  • 开源B站视频下载器:轻松获取高清内容的Python解决方案
  • 告别手动对齐!用UvSquares插件3分钟搞定Blender UV网格重塑
  • 百万瓦的电台,几秒钟换一个频率——从Aspidistra到中亚的发射机房,一段高功率短波的快调谐往事
  • 从零开始学AI:小白程序员必备收藏指南,快速掌握大模型实战技能
  • 收藏!小白程序员必看:揭秘AI大模型记忆管理的真相与优化方案
  • 终极便携式Windows C/C++开发工具链:w64devkit完全指南
  • C++语言基础3:用户自定义类型“class”详细讲解
  • 企业级 MCP 网关:统一授权、限流、协议转换与监控的架构与实现
  • WebPShop:Photoshop专业WebP格式支持的终极解决方案
  • 终极指南:如何免费下载大疆无人机历史固件实现完全控制
  • VLC Android电视版完全指南:从零开始打造你的智能电视媒体中心
  • 为什么我的 AI 创课助手不会写糊——SDD 把追问规范长期挂载、TDD 把每一个 JSON 字段都验证
  • Kimi LeetCode 3464. 正方形上的点之间的最大距离 Python3实现
  • 深度学习项目复现实战:从GitHub代码到可运行结果的系统方法论
  • 35B Agent超越万亿参数模型?上海AI Lab开源Agents-A1:scaling the Horizon
  • python语法竟如此简单,str append用法你知道吗?
  • 《图片添加贴纸》四、PhotoViewPicker使用指南