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

初识C语言(五)

前言

本文章就代表C语言介绍以及了解正式完成,后续进行具体分析和详细解析学习。知识根深蒂固才可以应付后来的学习,地基要打好,后续才会轻松。


十四、结构体

结构体是C语言中最最重要的知识点,使得C语言有能力描述复杂的类型。

比如学生,学生包含了:名字+年龄+性别+学号这几项信息。很多东西都是像这种的,复杂对象,还例如书的书名,作者,出版社,定价等等。

这里只能用结构体来描述学生:

struct Stu
{char name[20];     //名字char sex[5];       //性别int age;           //年龄
}; 

结构体的关键字就是struct,以后看见这个就是结构体,上述代码块就是一个简单的结构体,命名这个结构体是Stu,里面放了命名为name的空间为20的字符数组,这里面就可以放下一个字符串,大小在这个数组容量以内;同理,可以放下性别sex的字符数组,同样也可以存储字符串;还存放了一个整形的年龄;

我们来通过数组来创建变量:

int main( )
{int sum =0;struct Stu s ={"zhangsan","男",20};return 0;
}

上述代码通过定义了一个struct Stu类型,通过此类型来定义一个名字为s的变量,这个变量里面初始化里面的三个值,同时对应了Stu里的三个对象,姓名,性别,年龄。

通过访问结构体成员来打印值:

printf("%s\n",s.name);
printf("%s\n",s.sex);
printf("%d\n",s.age);

可以看见,结构体成员可以通过 . 来访问,在结构体变量后面加上这个符号就可以来访问变量里面的值 。

也可以通过一个写;一个函数来打印结构体里面的值,通过结构体地址来访问其值:

void Print(struct Stu* ps)
{printf("%s %s %d\n",(*ps).name,(*ps).sex,(*ps).age);//print("%s %s %d\n",ps->name,ps->sex,ps->age);
}int mian( )
{struct Stu s = {"zhangsan","男",20};Print(&s);return 0;
}

上面就定义了了一个名字为Print的函数,里面传入的参数为类型为Stu的结构体变量,通过访问这个结构体变量来访问里面的值。struct Stu是这个类型,加上一个 * 就说明这里是指针变量,需要传入地址才能访问,所以主函数里调用的时候通过取地址操作符来获取自己定义的结构体的地址,传入参数后就可以访问自己定义的结构体了。

第二种写法也可以,用->成员名来表达意思,二者的意思都是一样的,语法规定前面要是指针,就可以用箭头来表示,这里有一个指向的意思,因为指针是可以指向的。


结语 

至此,初阶就介绍完了,后续详细单个分析各个章节,后续还会深入了解。

相信有了一个清楚的认识就会好学一些。祝大家学习愉快,也祝我越来越好。

http://www.lryc.cn/news/451931.html

相关文章:

  • Linux:深入理解冯诺依曼结构与操作系统
  • 面试中顺序表常考的十大题目解析
  • 测试管理新增视图与高级搜索功能,测试计划支持一键生成缺陷详情,MeterSphere开源持续测试工具v3.3版本发布
  • TypeScript 算法手册 【归并排序】
  • 生信名词|MOA|基因敲低与基因敲除|DMSO|MODZ|生信基础
  • 基础岛第3关:浦语提示词工程实践
  • vscode中配置python虚拟环境
  • chatGPT对我学术写作的三种帮助
  • 【PostgreSQL 】入门篇——支持的各种数据类型介绍,包括整数、浮点数、字符串、日期、JSON、数组等
  • 野火STM32F103VET6指南者开发板入门笔记:【1】点亮RGB
  • 数据工程师岗位常见面试问题-3(附回答)
  • 强大的JVM监控工具
  • python 实现点的多项式算法
  • Pikachu-暴力破解-验证码绕过(on client)
  • 【Spring】Bean 的生命周期:从实例化到销毁
  • Ubuntu 安装RUST
  • Android Compose的基本使用
  • 计算机网络:计算机网络体系结构 —— 专用术语总结
  • Rust的前端Tauri编程-基于JS框架的初步探索
  • 【Flume Kafaka实战】Using Kafka with Flume
  • 5G NR物理信号
  • Pikachu-Cross-Site Scripting-存储型xss
  • 媲美GPT-4o mini的小模型,Meta Llama 3.2模型全面解读!
  • 【leetcode】 45.跳跃游戏 ||
  • coco(json)、yolo(txt)、voc(xml)标注格式的相互转换
  • 以太网交换安全:端口安全
  • [题解] Codeforces Round 976 (Div. 2) A ~ E
  • 【零基础入门产品经理】学习准备篇 | 需要学一些什么呢?
  • 第四届机器人、自动化与智能控制国际会议(ICRAIC 2024)征稿
  • [数据集][目标检测]电力场景防震锤缺陷检测数据集VOC+YOLO格式705张1类别