【C++基础】13. 结构体

文章目录

  • 【 1. 结构体的定义 】
  • 【 2. 结构体成员的访问 】
  • 【 3. 结构体变量的声明 】
  • 【 4. 指向结构体的指针 】

  • 数组与结构体:C/C++ 数组允许定义可存储相同类型数据项的变量。而结构体是 C++ 中另一种用户自定义的可用的数据类型,它允许我们存储不同类型的数据项。

【 1. 结构体的定义 】

  • 结构体定义的一般形式:
    • 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;

【 2. 结构体成员的访问 】

  • 使用成员访问运算符即小数点 . 访问结构体变量的成员。
  • 实例:定义结构体 Books 及其两个结构体变量 Book1 和 Book2,对两个结构体变量的成员进行赋值,最后输出信息。
#include 
#include 

using namespace std;

// 声明一个结构体类型 Books 
struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
};

int main( )
{
   Books Book1;        // 定义结构体类型 Books 的变量 Book1
   Books Book2;        // 定义结构体类型 Books 的变量 Book2

   // Book1 详述
   strcpy( Book1.title, "C++ 教程");
   strcpy( Book1.author, "Nowcoder"); 
   strcpy( Book1.subject, "编程语言");
   Book1.book_id = 12345;

   // Book2 详述
   strcpy( Book2.title, "CSS 教程");
   strcpy( Book2.author, "Nowcoder");
   strcpy( Book2.subject, "前端技术");
   Book2.book_id = 12346;

   // 输出 Book1 信息
   cout << "第一本书标题 : " << Book1.title <<endl;
   cout << "第一本书作者 : " << Book1.author <<endl;
   cout << "第一本书类目 : " << Book1.subject <<endl;
   cout << "第一本书 ID : " << Book1.book_id <<endl;

   // 输出 Book2 信息
   cout << "第二本书标题 : " << Book2.title <<endl;
   cout << "第二本书作者 : " << Book2.author <<endl;
   cout << "第二本书类目 : " << Book2.subject <<endl;
   cout << "第二本书 ID : " << Book2.book_id <<endl;

   return 0;
}

【C++基础】13. 结构体_第1张图片

【 3. 结构体变量的声明 】

  • 在多个文件中调用结构体变量时,需要在一个 .h 文件中定义该结构体,再在 需要调用的 cpp 源文件中包含上述 .h 文件并 定义结构体变量,最后再在.h 文件中通过 extern 声明该结构体变量。
//.cpp文件
#include 
#include "test.h"
using namespace std;
lidar BenewakeLidar;

int main()
{
	BenewakeLidar.AMP = 123;
	cout << BenewakeLidar.AMP;
	return 0;
}
//.h文件
#ifndef TEST_H
#define TEST_H

typedef struct
{
	int Dist;
	int AMP;
	int tem;
	bool RecieveFlag;
}lidar;

extern lidar BenewakeLidar;

#endif

【 4. 指向结构体的指针 】

  • 结构体指针的一般定义形式:
struct Books *struct_pointer; // 创建结构体指针struct_pointer
struct_pointer = &Book1;      // 结构体指针指向结构体变量Books1
  • 利用 -> 运算符,通过结构体指针访问结构体成员。
struct_pointer->title;
  • 实例
#include 
#include 

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 的变量 Book1
   Books Book2;        // 定义结构体类型 Books 的变量 Book2

    // Book1 详述
   strcpy( Book1.title, "C++ 教程");
   strcpy( Book1.author, "Nowcoder"); 
   strcpy( Book1.subject, "编程语言");
   Book1.book_id = 12345;

   // Book2 详述
   strcpy( Book2.title, "CSS 教程");
   strcpy( Book2.author, "Nowcoder");
   strcpy( Book2.subject, "前端技术");
   Book2.book_id = 12346;

   // 通过传 Book1 的地址来输出 Book1 信息
   printBook( &Book1 );

   // 通过传 Book2 的地址来输出 Book2 信息
   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;
}

【C++基础】13. 结构体_第2张图片

你可能感兴趣的:(C++,c++,开发语言)