大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
使用结构体类型处理组合数据:即用户自定义数据类型。
1 c语言提供了很多系统类型。如int char float double等等,但是这都是单一的数据类型,如果对于一个学生作为一个整体的话,那么他的类型就不可能是这么单一。并且肯定含义char int 等这些类型,这个时候就要根据我们自身的需要去建立数据类型,这就是struct。
2 数组不能完成这项任务,为什么呢?因为数组只能存储相同类型的数据,比如int [] char[]。
<第一个重点>:
3 结构体类型:
struct student{
Int num;
Char sex;
Int age;
Char name[20];
};
注意:1 最后的分号不要省略。
重:2 他与int(等) 是等价的,只不过int(等) 是系统定义好的,而这个是自己定义的。
3 结构体的名字是用户自定义的,以便于其他struct相区别。
4 大括号内部的子项被叫做成员。
重:5 成员(即子项)也可以是一个struct 类型。
重:结构体类型和int这种系统定义的类型是等价的,那么声明一个变量时就该是这样 ,
Int a; ================ struct student a;
<第二个重点>:
4 定义结构体变量类型:
1 结构体变量相当于一个模型,并没有定义变量,也就是说:如果是int a的话,那么只定义了int 是啥,还没有定义a.
2 三种方法定义结构体类型变量:
<1>struct student stu1, stu2;
这里定义了stu1 stu2 ,相当于int a里面的a;
<2>在定义结构体类型时同时定义变量
Struct student{
Int num;
Char name[20];
Int sex;
}student1,student2;
注意这里的结束的分号,逗号。写小程序比较合适,大程序还是分开比较好。
<3>不指定类型名而直接去定义。这种方式不好,因为显然这样就会导致整个程序只有一个struct。
3 只对结构体类型变量赋值,分配空间,而不会对结构体类型进行分配空间。
<第三个重点>:结构体类型变量的初始化与引用。
重:初始化可以静态形式,也可以动态。静态类似于数组的形式,动态类似于给类的属性赋值一样。
这个太简单了,不需要怎么讲,注意三点:
1 struct student {
Int num;
}student1={1};
2 student1.num;
3 如果用scan赋值,那么int 需要&, char[]不需要&,你懂得,数组名就是地址。
<第四个重点>:结构体数组:即当面对多个学生的时候该怎么办?
结构体数组:与数值型数组基本上是一样的,区别就是数组型存放的是一个一个数值,而这里面存放的是结构体类型变量。
初始化三种:
1 可以把所有事都办到一起。
2 可以把他分成两件事
3 定义时要{{ a, b , c } , { } , { }};
重重重重重重:3 一定要注意,数组的声明和初始化一定要放到一起。(一定要注意,这是要对所有数组来说)。
<第四个重点>:结构体指针。即一个结构体变量的其实地址。
1 指针变量的基类型必须与结构体类型一样。
2 访问结构体变量的成员:
1 (*p).name 注意这个括号不能省,因为 “ . ”运算符级别高于” * ”
2 p->name也可以访问。->为指向运算符。
3 结构体变量名.成员名。
3 strcut student * p;p++;其中这个p++,加的是不是一个字节,而是struct student 里面有多少字节,就一次加多少字节。
<第五个重点>:用结构体变量和变量的地址做参数。
一般是两种情况:1 用值(stu1.name)做传递。
2 用指针做传递。
? 形参 :
1 数组名 a;
2 数组 a[];
3 指针变量 *a;
重中之重:如果想在很多函数里用这个struct,那么一定要定义在函数外部。
重中之重:如果传递结构型变量数组参数给函数,由于是二维的,必然是一个二维数组,则实参的参数是地址(数组名:student或是首地址&student[0]),形参的参数必须是数组形式即(struct student a[]),而不能是(struct student * a);
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168087.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...