声明

struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
};

为了访问结构的成员,我们使用成员访问运算符(.)

结构作为函数参数

  • 可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。
{
   Books Book1;        // 定义结构体类型 Books 的变量 Book1
   Books Book2;        // 定义结构体类型 Books 的变量 Book2
 
    // Book1 详述
   strcpy( Book1.title, "C++ 教程");
   strcpy( Book1.author, "Runoob"); 
   strcpy( Book1.subject, "编程语言");
   Book1.book_id = 12345;
 
   // 输出 Book1 信息
   printBook( Book1 );
 
   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;
}

指向结构的指针

  • 定义指向结构的指针
struct Books *struct_pointer;
  • 指向相应地址
struct_pointer = &Book1;
  • 使用该指针访问结构的成员,必须使用->运算符
struct_pointer->title;
  • 重写上一个示例
{
   Books Book1;        // 定义结构体类型 Books 的变量 Book1
   Books Book2;        // 定义结构体类型 Books 的变量 Book2
 
    // Book1 详述
   strcpy( Book1.title, "C++ 教程");
   strcpy( Book1.author, "Runoob"); 
   strcpy( Book1.subject, "编程语言");
   Book1.book_id = 12345;
 
   // 输出 Book1 信息
   printBook(& Book1 );
 
   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;
}

typedef

  • 可以使用typdef为创建的结构类型定义一个别名
typedef struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
}Books;
 
Books Book1, Book2;//直接使用 _Books_ 来定义 _Books_ 类型的变量,而不需要使用 struct 关键字。
  • 在C++中,当你声明了一个struct类型后,你可以直接使用这个类型来定义变量
  • 在C语言中,如果不使用typedef关键字给结构体起一个别名,需要使用struct关键字来定义变量
struct Books Book1;