文章目录  
 【 1. 结构体的定义 】 【 2. 结构体成员的访问 】 【 3. 结构体变量的声明 】 【 4. 指向结构体的指针 】   
 
数组与结构体 :C/C++ 数组允许定义可存储相同类型数据项的变量。而结构体是 C++ 中另一种用户自定义的可用的数据类型,它允许我们存储不同类型的数据项。结构体定义的一般形式: 
  type_name 是结构体类型的名称, member_type1 member_name1 是标准的变量定义,比如 int i; 或者 float f; 或者其他有效的变量定义。 在结构定义的末尾,最后一个分号之前, 我们可以在定义完结构体后直接定义一个或多个结构变量 ,这是可选的。  struct  type_name  { 
member_type1 member_name1; 
member_type2 member_name2; 
member_type3 member_name3; 
. 
. 
}  object_names; 
实例:声明一个结构体类型 Books,变量为 book1。 struct  Books 
{ 
   char   title[ 50 ] ; 
   char   author[ 50 ] ; 
   char   subject[ 100 ] ; 
   int    book_id; 
}  book1; 
可以利用 typedef 为 所定义的结构体类型 起一个别名。 typedef  struct  Books 
{ 
   char   title[ 50 ] ; 
   char   author[ 50 ] ; 
   char   subject[ 100 ] ; 
   int    book_id; 
} Books; 
Books Book1,  Book2; 
使用成员访问运算符即小数点  .   访问结构体变量的成员。 实例 :定义结构体 Books 及其两个结构体变量 Book1 和 Book2,对两个结构体变量的成员进行赋值,最后输出信息。# include  <iostream> # include  <cstring> using  namespace  std; 
struct  Books 
{ 
   char   title[ 50 ] ; 
   char   author[ 50 ] ; 
   char   subject[ 100 ] ; 
   int    book_id; 
} ; 
int  main (  ) 
{ 
   Books Book1;         
   Books Book2;         
   
   strcpy (  Book1. title,  "C++ 教程" ) ; 
   strcpy (  Book1. author,  "Nowcoder" ) ;  
   strcpy (  Book1. subject,  "编程语言" ) ; 
   Book1. book_id =  12345 ; 
   
   strcpy (  Book2. title,  "CSS 教程" ) ; 
   strcpy (  Book2. author,  "Nowcoder" ) ; 
   strcpy (  Book2. subject,  "前端技术" ) ; 
   Book2. book_id =  12346 ; 
   
   cout <<  "第一本书标题 : "  <<  Book1. title << endl; 
   cout <<  "第一本书作者 : "  <<  Book1. author << endl; 
   cout <<  "第一本书类目 : "  <<  Book1. subject << endl; 
   cout <<  "第一本书 ID : "  <<  Book1. book_id << endl; 
   
   cout <<  "第二本书标题 : "  <<  Book2. title << endl; 
   cout <<  "第二本书作者 : "  <<  Book2. author << endl; 
   cout <<  "第二本书类目 : "  <<  Book2. subject << endl; 
   cout <<  "第二本书 ID : "  <<  Book2. book_id << endl; 
   return  0 ; 
} 
 
 在多个文件中调用结构体变量时,需要在一个 .h 文件中定义该结构体,再在 需要调用的 cpp 源文件中包含上述 .h 文件并 定义结构体变量,最后再在.h 文件中通过 extern 声明该结构体变量。  
# include  <iostream> # include  "test.h" using  namespace  std; 
lidar BenewakeLidar; 
int  main ( ) 
{ 
	BenewakeLidar. AMP =  123 ; 
	cout <<  BenewakeLidar. AMP; 
	return  0 ; 
} 
# ifndef  TEST_H # define  TEST_H typedef  struct 
{ 
	int  Dist; 
	int  AMP; 
	int  tem; 
	bool  RecieveFlag; 
} lidar; 
extern  lidar BenewakeLidar; 
# endif struct  Books  * struct_pointer;  
struct_pointer =  & Book1;       
 利用 ->  运算符,通过结构体指针访问结构体成员。 struct_pointer-> title; 
# include  <iostream> # include  <cstring> using  namespace  std; 
void  printBook (  struct  Books  * book ) ; 
struct  Books 
{ 
   char   title[ 50 ] ; 
   char   author[ 50 ] ; 
   char   subject[ 100 ] ; 
   int    book_id; 
} ; 
int  main (  ) 
{ 
   Books Book1;         
   Books Book2;         
    
   strcpy (  Book1. title,  "C++ 教程" ) ; 
   strcpy (  Book1. author,  "Nowcoder" ) ;  
   strcpy (  Book1. subject,  "编程语言" ) ; 
   Book1. book_id =  12345 ; 
   
   strcpy (  Book2. title,  "CSS 教程" ) ; 
   strcpy (  Book2. author,  "Nowcoder" ) ; 
   strcpy (  Book2. subject,  "前端技术" ) ; 
   Book2. book_id =  12346 ; 
   
   printBook (  & Book1 ) ; 
   
   printBook (  & Book2 ) ; 
   return  0 ; 
} 
void  printBook (  struct  Books  * book ) 
{ 
   cout <<  "书标题  : "  <<  book-> title << endl; 
   cout <<  "书作者 : "  <<  book-> author << endl; 
   cout <<  "书类目 : "  <<  book-> subject << endl; 
   cout <<  "书 ID : "  <<  book-> book_id << endl; 
}