#C语言-基础篇(Ⅳ)
目录
九、结构体(基础)
9.1 创建结构体
9.2 结构体初始化
9.3 结构体变量的数据打印
10、结语
九、结构体(基础)
定义:用于描述复杂对象,
9.1 创建结构体
比如:描述一个学生,需要的是,姓名+性别+年龄+学号。
代码9_1:创建一个学生结构体:
#include<stdio.h>struct Student
{//创建结构体char name[20];//用于存储姓名char sex[10];//用于存储性别short age;//用于存储年龄int number;//用于存储学号
};
说明:
(1)创建结构体需要用到关键字struct,同时需要结构体名称;
(2)结构体中的变量在创建时均未存储,所以不用初始化,但数组中的元素个数必须为确定的;
(3)结构体创建结束后的分号不可少;
9.2 结构体初始化
创建好一个结构体后,在主函数中,我们需要再创建一个结构体变量,即申请空间来存储信息后,才能够初始化。
代码9_2,创建结构体变量并初始化:
#include<stdio.h>struct Student
{char name[20];char sex[10];short age;int number;
};int main()
{//创建结构体变量st1、st2struct Student st1={"张三","男",20,20211024};struct Student st2={"李四",“男”,18,20212025};return 0;
}
说明:
以上代码即完成了创建结构体变量以及初始化,st1、st2为结构体变量,类型是struct Student类型,初始化应使用大括号,其中字符串用双引号引起,数字不需要,并且初始化顺序与结构体中保持一致。
补:
字符串中,如果是字母字符串,每一个字母所占空间为一个字节;如果是文字字符串,每一个汉字所占空间为两个字节。
9.3 结构体变量的数据打印
打印结构体中的数据,就需要访问到结构体的数据并取出来。这时,我们就要用到操作符中没有介绍的两个:点操作符.和箭头操作符->(结构体成员访问操作符)。
#include<stdio.h>struct Student
{char name[20];char sex[10];short age;int number;
};int main()
{struct Student st1 = { "张三","男",20,20211024 };struct Student st2 = { "李四","男",18,20211025 };struct Student* list = &st1;//list为指针变量,类型是struct Student*printf("%s %s %d %d\n", st1.name, st1.sex, st1.age, st1.number);printf("%s %s %d %d\n", (*list).name, (*list).sex, (*list).age, (*list).number);printf("%s %s %d %d\n", list->name, list->sex, list->age, list->number);return 0;
}
说明:
打印结构体变量中的数据使用的就是点操作符以及箭头操作符。
(1)点操作符:结构体变量.结构体成员,使用解引用符号时必须要有括号
(2)箭头操作符:结构体指针变量->结构体成员
(3)以上用法均为规定用法。
结构体基础我们就介绍到这里,点到为止。后期会有更加详细的介绍,值得一提的是,结构体的用处非常之大,比如后面会学习的数据结构,其中就使用了大量的结构体。
10、结语
到这里C语言基础篇就宣布完结了,掌握了基础后,相信对C语言有了初步的了解,希望在接下来的学习中再接再厉。
#C语言-基础篇(Ⅳ)相关推荐
- Go语言基础篇 (一)初识Golang
文章目录 发展历程 语言特点 适用人群 我为什么学习Golang 注意事项 系列文章分类 下期预告 参考链接 发展历程 Go语言是在2007年由Robert Griesemer.Ken Thompso ...
- C语言基础篇02:单链表实现学生成绩管理系统
单链表实现学生成绩管理系统 前言 需求分析 详细设计 增加成绩信息 删除成绩信息 修改成绩信息 查询学生信息和浏览学生信息 总结 前言 上篇已经讲过单链表的基本实现,这篇将以一个简单的管理系统入手. ...
- C++语言基础篇学习总结及心得体会(难度极低)
关于C++的语言部分(信息学奥赛一本通),我自己总结了一部分的知识. 因为过于基础,第一部分源代码的简介和使用我就不讲了. 我直接从第二章顺序结构程序设计开始讲.首先,我认为在这一章内只要理解一个因果 ...
- 每日一题(C语言基础篇)2
题目描述:使用C语言将一个整型数字转换成字符串并倒序打印,例如:123转换成字符串321,-1234转换成字符串-4321. 代码实现: #include <stdio.h> #inclu ...
- C语言基础篇(零)gcc编译和预处理
导航: 1. gcc编译 2. 预处理 ----->x<------------->x<--------------->x<--------------->x ...
- C语言基础篇,什么是封装,附代码!
封装就是把数据和函数打包到一个类里面,其实大部分C语言编程者都已近接触过了. C 标准库中的 fopen(), fclose(), fread(), fwrite()等函数的操作对象就是 FILE.数 ...
- 05、老徐教你学C语言基础篇4——C语言之门(运算篇)
有了数据,下来比较重要的就是运算了,就像我们小时候学的--人是社会的人,离开了社会就不能称之为人,数据也是一样的,单个的数据没有什么意义,只有参与运算的数据才能绽放属于他自己的光和热! 一.本章目标 ...
- 02、老徐教你学C语言基础篇2——C语言摩拳擦掌齐上阵(环境篇)——理论
工欲善其事必先利其器 君欲学语言必先熟其境 C语言的语法.理论前面我们有了一定的了解,但是看书永远看不出一个程序员,再好的武功秘籍没经过10数年的敲打也不可能成为绝世高手,段誉毕竟是少数,我们还是老老 ...
- C语言基础篇-01-CMD指令
作者介绍 张伟伟,男,西安工程大学电子信息学院,2019级硕士研究生,张宏伟人工智能课题组. 微信公众号:可随时查阅,搜索-张二牛的笔记,内容会分类上传. 研究方向:机器视觉与人工智能. 电子邮件:z ...
最新文章
- 精选机器学习开源项目Top10
- Xcode 编译有错误却没有任何可查看错误的issues
- app获取个人信息是否合法_APP隐私合规介绍和实施方案
- 用wget做站点镜像
- Codeforces Round #494 (Div. 3)【未完结】
- .NET静态代码织入——肉夹馍(Rougamo)
- mysql事务基础+基于innodb的行锁+间隙锁+如何锁定行
- 工作流实战_21_flowable 加签 任务向前加签 向后加签
- 为什么工程师要掌握FPGA开发知识?
- ————————C语言中快速排序方法——————————————
- squid 日志清理
- 《Flask 入门教程》第 3 章:模板
- Java的“ for each”循环如何工作?
- python百度文库免券下载
- 北理珠计算机专业在广东排第几,独立学院排名第一!北理珠这项工作获省教育厅肯定...
- pcr计算码率的过程
- java则么实现md5解密_java的md5解密
- Gas Station (环形加油站)
- 用krpano 分解下载全景图
- oracle实时异地同步,异地Oracle数据库数据同步
热门文章
- Python金融系列第八篇:Fama-French 多因子模型
- 微信小程序中,使用正则表达式,快速验证是否是数字(附正则表)
- openvz使用手册
- English语法_5大句型
- 人际关系-《吸引力是这样炼成的》书中的精髓:掌握7个人际交往技能,收获丰富多彩的人生。
- 3、使用angular cli初始化一个新项目
- Android Q读写共享目录媒体文件
- arcgis更改图层坐标系_arcgis里怎么转换坐标系
- Git安装及基本操作
- pandas使用merge函数将多个dataframe数据连接起来、设置how参数为outer指定全连接(outer join)、left_on参数指定左侧dataframe的连接字段