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

C语言快速入门10-结构体

1.什么是结构体

重点是不同的数据类型的变量的结合

可以理解结构体的数据类型就是struct,结构体名字person,具体赋值的,就是变量名称。结构体内部包含各类数据类型的变量数据集。
切记结构体里面的成员变量,尾部需要分号,不是逗号结尾。

2.如何使用结构体

定义与初始化结构体,

访问结构体的成员变量以及值的设定。

#include<stdio.h>structperson{charname[20];intage;charsex[10];};intmain(void){structpersona={"pepole",19,"man"};// 字符串不可以是单引号 ,C中字符串应该用双引号,单引号用于字符常量printf("%s",a.name);//pepoleprintf("\r\n");printf("%d",a.age);//19printf("\r\n");printf("%s",a.sex);//manreturn0;}

例子2:进行数组化的结构体操作,切记字符串不能直接复制给数组,需要strcpy函数赋值。

#include<stdio.h>#include<string.h>structperson{charname[20];intage;charsex[10];};intmain(void){structpersonb[2];b[0].age=20;//b[0].name="canse";//错误 字符串不能直接给数组赋值,得用strcpy// b[0].sex='w'; //错误,字符串不能直接给数组赋值,得用strcpystrcpy(b[0].name,"canse");strcpy(b[0].sex,"w");printf("%s",b[0].name);//canseprintf("\r\n");printf("%d",b[0].age);//20printf("\r\n");printf("%s",b[0].sex);//wreturn0;}

3.结构体与函数

使用结构体作为函数的入参。

4.结构体与指针

使用指针访问结构体的成员:
实际上,是将结构体的地址赋值给指针,此时有别于结构的成员变量是.来引用或赋值,需要用箭头:->.
同时指针想指向结构体,那么指针类型必须是struct 结构体名称 *指针名=&初始化。

-> 的优先级高于,因此 zhizhen->x.high 先执行,它取出 y.x.high 的值(例如 88),这是一个 int 类型的数据。
然后 * 运算符试图对这个 int 值进行解引用,但 int 不是指针,不能解引用。这会导致编译错误(如 invalid type argument of unary '
')。

#include<stdio.h>#include<string.h>structpeople{inthigh;intscope;};//切记,子结构体,必须定义在前面。structperson{charname[20];intage;charsex[10];structpeoplex;};intmain(void){// char *zhizhen; 不对,必须是struct类型指针才行// struct people xiaomin={88,99};structpersony={"ccc",19,"man",{88,99}};structperson*zhizhen=&y;// 取了地址printf("%d",zhizhen->x.high);// 切记,指针结构体不需要再加*引用printf("\r\n");printf("%d",zhizhen->age);// 19return0;}

5.结构体的嵌套


http://www.jsqmd.com/news/478015/

相关文章:

  • Cockpit实战指南:如何通过Web界面高效管理Linux服务器集群
  • 【国家级等保2.0强制要求】:MCP 2.0消息完整性校验必须满足的4项密码学硬指标(附国密SM4-GMAC审计清单)
  • Open3DSG复现实战:从数据裁剪到模型调试的完整避坑指南
  • Nunchaku FLUX.1-dev多场景落地:政府宣传图/党建素材/公益广告生成
  • 妈妈级教程:Python 全栈企业实战体系
  • 【硬核预测】AI连Verilog都能写了,FPGA工程师的铁饭碗还能端多久?
  • RK3588嵌入式Linux开发环境搭建避坑指南:从SDK解压到repo同步全流程
  • GAMES101作业7-路径追踪核心算法与性能优化全解析
  • UNIT-00:Berserk Interface 在网络安全领域的应用:威胁情报分析与代码审计
  • uniapp集成leaflet地图实战:移动端开发避坑指南
  • BeeWorks+OpenClaw=“企业专属的虾塘”:养一只听话又能干的“数字员工”
  • YOLO12模型训练全攻略:从数据标注到模型调优
  • ollama+Phi-4-mini-reasoning开源方案:可私有化部署的数学AI推理服务
  • 从零构建ArduPilot全栈仿真:Gazebo、MAVROS与QGC的协同实战
  • Fish Speech 1.5问题解决指南:WebUI无法访问、生成超时怎么办?
  • StructBERT零样本分类-中文-base精彩案例分享:10个真实业务场景分类效果对比
  • 全国路网数据深度解析:从OSM到可视化应用
  • 高通跃龙QCS9100平台上工业缺陷检测实战(2): 安装 QAIRT/QNN,并把 ONNX 跑到 HTP/NPU
  • GTE文本向量-large效果实测:中文命名实体识别准确率超92%
  • 【AI+教育】我用OpenClaw栽了5次跟头后,总结出这10个避坑干货(新手直接抄)
  • STM32 RTC权限控制与写保护机制深度解析
  • 从“山”到“矩阵”:拆解蓝桥杯Java B组真题中的算法思维跃迁
  • C++ map 底层探秘:从结构设计到 operator [] 实现的全解析
  • yolov6安装使用
  • 无需配置环境!YOLO26官方镜像快速入门与实战演示
  • IDEA集成开发环境高效使用:调试调用万象熔炉·丹青幻境的Java应用
  • LobeChat零基础部署教程:5分钟搭建私人ChatGPT,小白也能轻松搞定
  • SpringBoot监听Redis Key过期事件
  • 华为云OBS实战配置:从基础创建到高级策略部署
  • 超4亿元!知识产权行业单笔最大融资落地