C语言中使用结构体
1、先定义结构体
struct stu
{
char name[20];
long number;
float score[4];
} ;
再定义指向结构体类型变量的指针变量:
struct stu *p1, *p2 ;或者
struct stu p1, p2 ;
定义指针变量p 1、p 2,分别指向结构体类型变量。
2、
在定义类型的同时定义变量,如
struct student{
char name[20];
long number;
float score[4];
}student1, student2;
3、直接定义结构类型变量,如
struct{
char name[20];
long number;
float score[4];
}student1, student2;
注意:
定义的结构体如果是指针,访问成员时就用“->”如果定义的是结构体变量,访问成员时就用“.”这个使用方式大家在初学STM32的的时候在库函数中会遇到的,
4、
struct和typedef struct的区别
(1)在C中定义一个结构体类型要用typedef:typedef structStudent {
char name[20];
long number;
float score[4];
}Stu;
在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明)
这里的Stu实际上就是struct Student的别名。Stu==struct Student另外这里也可以不写Student(于是也不能struct Student stu1;了,必须是Stu stu1;)
typedef struct {
char name[20];
long number;
float score[4];
}Stu;
但在c++里很简单,直接structStudent {
char name[20];
long number;
float score[4];
};
于是就定义了结构体类型Student,声明变量时直接Student stu1,stu2;
(2)在c++中如果用typedef的话,又会造成区别:struct Student {
char name[20];
long number;
float score[4];
}stu1;//stu1是一个变量
typedef struct Student2 {
char name[20];
long number;
float score[4];
}stu2;//stu2是一个结构体类型=structStudent
使用时可以直接访问stu1.a 但是stu2则必须先 stu2 s2;
然后 s2.a=10;