一、什么是结构体
在骨子问题中,一组数据常常具有不同的数据类型;举例在学生信息登记表中,姓名为字符型,学号为整型或字符型,年级为整型,性别为字符型,得益为整型或实型。因为数据类型不同,彰着不可用一个数组来存放。
在C话语中,不错使用结构体(Struct)来存放一组不同类型的数据。结构体(struct)指的是一种数据结构,是C话语中团员数据类型(aggregate datatype)的一类。结构体不错被声明为变量、指针或数组等,用以已毕较复杂的数据结构。结构体同期亦然一些元素的集合,这些元素称为结构体的成员(member),且这些成员不错为不同的类型,成员一般用名字拜谒。
界说结构体的一般模式为:
struct 结构体名{
你说,这是一场戏吗?真情流露,还是别有隐情?接下来,让我们慢慢揭开这个故事。
在这场全球性的赛事中,我国高校表现不俗,除了“术业有专攻”的政法类院校,还有理工类院校、外语类院校、文科类院校都斩获佳绩,其中北京外国语大学凭借其独特的人才培养模式和一流的外语资源,迪士尼彩乐园在涉外法治人才的培养上成果显著,在本次决赛中斩获一等奖。
成员列表
伸开剩余84%};
在成员表列中不错是几种基本数据类型,也不错是结构体类型。
struct 类型名{} 香港迪士尼彩乐园变量;后的分号不可漏
举例用结构体来暗意学生信息:struct stu{
char *name; //姓名
int num; //学号
char sex; //性别
float score; //得益
};
二、结构体变量
结构体亦然一种数据类型,不错用来浮现变量。举例:
struct stu stu1, stu2;
界说了两个变量 stu1 和 stu2,它们王人是 stu 类型,王人由 4 个成员构成。扫视要道字struct不可少。
结构体的各个成员在内存中是连结存储的。stu1、stu2 的内存如下图所示:
也不错在界说结构体的同期界说结构体变量:
struct stu{
char *name; //姓名
int num; //学号
char sex; //性别
float score; //得益
} stu1, stu2;
如若只需要 stu1、stu2 两个变量,也不错不写结构体名字:
struct{ //莫得写 stu
char *name; //姓名
int num; //学号
char sex; //性别
float score; //得益
} stu1, stu2;
这么作念书写浅近,然而因为莫得结构体名,后头就没法用该结构体界说新的变量。
也不错用宏界说使一个记号常量来暗意一个结构类型,举例:
#define STU struct stu
STU{
char *name; //姓名
int num; //学号
char sex; //性别
float score; //得益
};
STU stu1, stu2;
面咱们会学习Windows编程,大部分结构体王人是这么界说的。
typedef和#define用法不同,以致不错集合起来无邪使用,使用时一定要扫视两者的不同之处。
三、成员的获得和赋值
在C话语中,使用点号.来获得结构体中的一个成员,一般时刻为:
结构变量名.成员名
如:
stu1.name; //第一个学生的姓名
stu2.score; //第二个学生的得益
获得成员后,就不错对该成员进行赋值了,举例:
stu1.name = “Tom”;
stu2.score = 90.5;
除了不错对成员进行逐个赋值,也不错像数组相通举座赋值,举例:
struct stu{
char *name; //姓名
int num; //学号
char sex; //性别
float score; //得益
} stu1, stu2 = { "Tom", 10, 'M', 90 };
不外举座赋值仅限于上头这么的情况,也即是界说结构体的同期声明变量。底下的写法是空幻的:
stu2 = { "Tom", 10, 'M', 90 };
一个齐备的示例:
#include <stdio.h>
#define STU struct stu
int main(){
STU{
char *name; //姓名
int num; //学号
char sex; //性别
float score; //得益
};
STU stu1;
stu1.name = "James Bond";
stu1.num = 1;
stu1.sex = 'M'; //用M暗意男性,W暗意女性
stu1.score = 99;
printf("Hello everyone! My name is %s, a naughty boy, but with good scores(%.2f) and top No.(%d)!", stu1.name, stu1.score, stu1.num);
return 0;
}
发布于:四川省