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; |   
        
 
    
    
    
     
 
 |