结构体
由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构体(struct)。
出现的原因
假如我们要定义一些学生相关的东西,比如,级别,姓名,分数。那么就要定义三个变量,而且这三个变量在内存不是连续的,维护时会比较困难。传参修改值也会异常困难。结构体应运而生,结构体就可以放某个种类的一些基本性质,这些变量都会在这个结构体的内存块中,定义也会简单,维护起来也不麻烦。
结构体
结构体使用
//struct 结构体名
struct student
{
//定义时不能赋值
int age;
char name[20];
float score;
};
//注意;结束
这是一个定义,为结构体数据类型,和基本数据类型,如int是一样的,只是告诉编译器如果定义时该分配多大空间,所以不能在定义时赋值,语法出错。注意,定义是以 ; 结束。
//定义变量且顺序赋值
//注意不能漏关键字struct
struct student s1 = {12,"Tom",76};
//定义变量乱序赋值
struct student s3 = {age:12,
score:81,
name:"Koko"};
//先定义变量后赋值
//.操作符赋值
struct student s2;
s2.age = 13;
strcpy(s2.name,"John");
s2.score = 87;
//打印s1
printf("age = %d,name = %s,score = %f\n",s1.age,s1.name,s1.score);
也可以定义一个结构体指针
//定义结构体指针变量
struct student *s4 = &s3;
//->操作符赋值
s4->age = 18;
strcpy(s4->name,"Coco");
s4->score = 90;
注意普通结构体变量是用.操作符赋值,指针变量使用->操作符赋值。定义变量时要带struct关键字,不然编译器不知道此为结构体数据类型,编译出错。
其他知识点
结构体可以在定义时,就定义变量
struct student
{
int age;
char name[20];
float score;
}s5,s6;
//定义变量s5,s6
//与struct student s5;效果一样
定义结构体时可以不带结构体名字,但是只能在定义时定义变量
struct
{
int age;
char name[20];
float score;
}s7;
结构体数组
//定义时赋值
struct student s[3] = {{22,"a",91},
{23,"b",92},
{24,"c",93}};
//定义后赋值
s[0].age = 21;
结构体嵌套
//结构体定义
struct primStudent
{
struct student stu;
int height;
};
//赋值
p.stu.age = 9;
注意事项
结构体定义时不能赋值,结构体定义结束时以 ; 结束
结构体简单介绍告一段落
微信号
网友评论