此文是作者初次学习C语言的时候,写的笔记博文,如有错误请及时指正,谢谢!!!
目录
1,什么是结构体
我们已经学过的数据类型有 char, int,long, short, long long, float, double,这些类型只能描述单一的对象,不能描述复杂的对象。 比如现在我们要描述一个学生类型的复杂对象,需要描述他的名字, 年龄, 性别, 成绩----。 我们就需要吧char类型的, int类型的, float类型的。整合到一起共同构成这个复杂对象。把这些单一对象和在一起就需要用到结构体。
结构是一些值的集合,这些值称为成员变量。结构的每一个成员可以是不同类型的变量。
2. 结构体的声明
2,1结构体声明
//结构体类型的声明
struct stu//这里的struct是用来定义结构体
//stu是结构体名(自定义的)
{
char name;//名字
int age;//年龄
char sex[8];//性别
float score;//分数
};//注意这里有一个;
struct stu
{
char name;
int age;
}s1, s2, s3;
//这里的s1,s2,s3是通过struct stu类型创建的变量
//可以写也可以不写,可以写一个也可以写多个。
//此时创建的s1, s2, s3,是全局变量。
//但是平时很少这样定义
int main()
{
//在主函数内部也可以创建结构体变量
struct stu s4;
struct stu s5;//这里的s4, s5就是局部变量
//struct stu整体才是结构体类型, 不能随便省略任何单个词
//如果觉得结构体类型太长, 这里可以用到typedef//类型重定义或者类型重命名
typedef struct stu stu;//把struct stu 重新起个名字叫stu
stu s5;
stu s6;//这里经过类型重定义,就可以用自定义的类型名来创建变量s5,s6
return 0;
}
typedef struct stu
{
char name;
int age;
char sex[8];
float score;
}stu;
//然后以后就可以用 stu 来定义结构体变量。
2,2结构体成员的类型
结构的成员可以是标量,数组, 指针,甚至是其他结构体。
2,3结构体变量的定义的初始化
3. 结构体成员的访问
4. 结构体传参
struct S
{
int data[1000];
int num;
};
struct S s = {{1,2,3,4}, 1000};
//结构体值传参
void print1(struct S s)
{
printf("%d\n", s.num);
}
//结构体址传参
void print2(struct S* ps)
{
printf("%d\n", ps->num);
}
int main()
{
print1(s); //传结构体
print2(&s); //传地址
return 0;
}