什么是结构体&如何定义结构体
结构体是把一些基本数据类型组合在一起形成一个新的复杂的数据类型
结构体的三种定义方式(推荐使用第一种)
·结构体第一种定义方式
#include<stdio.h> //第一种方式 struct Student { int age; float score; char sex; }; int main() { struct Student st = { 80,66.6,'f' }; printf("%d\n",st.age);//80 return 0; } |
·结构体第二种定义方式
#include<stdio.h> //第一种方式 struct Student { int age; float score; char sex; }st; int main() { st.age = 80; printf("%d\n",st.age);//80 return 0; } |
·结构体第三种定义方式
#include<stdio.h> //第一种方式 struct { int age; float score; char sex; }st; int main() { st.age = 80; printf("%d\n",st.age);//80 return 0; } |
对于上面的结构体,结构体的类型是struct Student,这个类型的变量是st、st1、st2……
结构体变量的使用
赋值和初始化
下面是结构体变量初始化的两种方式:
#include<stdio.h> //第一种方式 struct Student{ int age; float score; char sex; }; int main() { struct Student st = { 80,12.21,'m' }; //定义的同时进行初始化 struct Student st2; st2.age = 12; st2.score = 100; st2.sex = 'f'; //先定义,然后对结构体每个成员变量单独赋值 return 0; } |
如何取出结构体变量中的每一个成员
- 结构体变量名.成员变量名
- 指针变量名->成员变量名
#include<stdio.h> struct Student{ int age; float score; char sex; }; int main() { struct Student st = { 80,12.21,'m' }; //取出结构体中的age printf("%d\n", st.age); struct Student* pst = &st; printf("%d\n", pst->age); return 0; } |
pst->age在计算机内部会被转化成(*pst).age
结构体变量的运算
函数参数传递的问题
#include<stdio.h> #include<string.h> struct Student{ int age; float score; char sex; }; void InputStudent(struct Student * pstu) { pstu->age = 10; pstu->score = 12.34; pstu->sex = 'm'; } void OutputStudent(struct Student ss) { printf("%d %f %c \n", ss.age, ss.score, ss.sex); } int main() { struct Student st; InputStudent(&st); OutputStudent(st); return 0; } |
结构体变量的运算
结构体变量之间不能相互加减乘除,但是同类型的结构体变量之间可以相互赋值