c语言从0->1入门——结构体
2023-02-18 16:27:26 时间
关于作者:
2019NOIP退役成员,学习c语言已有多年经验,更懂得考试的题目,和初学者学习时所遇到的问题 华为云享专家,以及CSDN的新星创作者,有写博客的一定能力
关于本栏目
本栏目的宗旨是带你入门c语言,作者打算用题海+c语言的概念来完成本栏目,
适用人群:面向广大的编程爱好者和大学生来进行创作 学完本栏后你能达到的水平:计算机二级水平左右,入门c语言学习 题目:主要来源于网络和c语言的入门算法题目
写在前面的话(第十三天)
记住我们的宗旨:努力去做,让一切交给时间来评判!
结构体
今天我们来学习结构体,数组可以定义多个同一个类型的变量,结构体可以定义多个不同类型的变量,定义结构体我们要使用struct语句格式如下:
struct tag {
member-list
member-list
member-list
...
} variable-list ;
tag 是结构体标签。
member-list 是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。
variable-list 结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。
例如我们定义一个学生结构:
struct Student
{
int age;
char name[20];
}S1;
访问结构成员
为了访问结构的成员,我们使用成员访问运算符(.)下面我们来使用一下,上面定义的结构体struct
#include<stdio.h>
struct Student
{
char name[20];
int age;
};
int main()
{
Student s1;
scanf("%d\n", &s1.age);
scanf("%s", &s1.name);
printf("%d", s1.age);
printf("%s", s1.name);
return 0;
}
定义结构体数组
可以和基本数据类型一样,定义数组,表示并排的多个对象
Student s[3];
//或者在定义的时候就初始化
Student s[3] =
{
{"YMM",1},
{"gg",2},
{"nn",3}
}
同样数组的元素类型是结构体,所以也可以用【】来获取元素,然后用点号来访问元素
for(int i = 0 ; i<3;i++)
{
printf("name:%s age:%d",
s[i].name,
s[i].age);
}
结构体与指针
结构体类后加上*就表示相应的指针类型 Student *s = &a; 对于指针指向的对象,可以用->操作符来访问对象的成员 s->name = “Ymm”; 当然也可以写成 ( *s).name这种格式但是我们一般不推荐这样写
结构体与函数
俩个内容: 1.作为函数的参数 2.作为函数的返回值
void test(Student a)
{
printf("name:%s,age:%d",a.name,a.age);
}
void test01(Student *a)//传入地址
{
printf("name:%s,age:%d",a->name,a->age);
}
当作为函数返回值时候:
Student create(int age)
{
Student a;
a.age = age;
return a;//直接return
};
结构体作为结构体的成员
struct Color
{
char r;
char g;
char b;
}
struct Object
{
int x,y;
Color rgb;//在创建一个Color类型
}
像这样来访问成员:
Object obj=
{
1,
2,
{1,2,3}//rgb
}
printf("obj:(%d,%d)color:\n",
obj.x,obj.y,
obj.rgb.r,
obj.rgb.g,
obj.rgb.b
);
用俩个点号来进行访问
作业
用结构体来创建一个手机类,要包含3种手机,和他们的厂商,年份,参考价格三个条件
相关文章
- 详解JAVA线程问题诊断工具Thread Dump
- 还在手动发早安吗?教你用java实现每日给女友微信发送早安
- Java开发如何通过IoT边缘ModuleSDK进行进程应用的开发?
- 解读Java内存模型中Happens-Before的8个原则
- Java7提供的Fork/Join框架实现高并发程序,你会使用吗?
- Java开发如何通过IoT边缘ModuleSDK进行协议转换?
- 0停机迁移Nacos?Java字节码技术来帮忙
- 视频 | ZYNQ开发板深度评测:高性能FPGA和双核ARM的强强联合!
- I²C协议官方标准文档2021最新版本下载
- 国产FPGA开发板上手体验:不足百元,集成ARM硬核处理器!
- 业内首发!感芯MC3172硬实时RISC-V芯片,还用啥RTOS!
- 从汇率转换通用解决方案到可复用设计思想
- 顶流选手专访 - 最具推广价值作品 - 背后故事
- 顶流选手专访 - 最佳展现创意作品 - 背后故事
- 【精华】顶流选手专访-最佳可视化展现作品(冠军)
- 冠军作品背后的故事会是什么呢
- IBM 人力资源综合分析案例
- 世界五百强财务高管数字化战群雄经典案例
- ZebraBI 6.0 发布,更高更快更强大
- DAX 引擎之父揭秘 DAX 引擎内部细节