- 数组与结构体: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;
1.1 定义方式1 - 单独定义类型和变量
- 实例:声明一个结构体类型 Books,变量为 book1、book2。
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
};
Books book1,book2;
1.2 定义方式2 - 同时定义类型和变量
- 实例:声明一个结构体类型 Books,变量为 book1、book2。
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book1,book2;
1.3 定义方式3 - typedef 定义 - 保留结构体类型名
- 利用 typedef 为 所定义的结构体类型 Books 起一个别名 MyBooks。
typedef struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
}MyBooks;
MyBooks Book1, Book2;
1.4 定义方式4 - typedef 定义 - 省略结构体类型名
typedef struct
{
char title[50];
char author[50];
char subject[100];
int book_id;
}MyBooks;
MyBooks Book1, Book2;
【 2. 结构体成员的访问 】
- 使用成员访问运算符即小数点 . 访问结构体变量的成员。
- 实例:定义结构体 Books 及其两个结构体变量 Book1 和 Book2,对两个结构体变量的成员进行赋值,最后输出信息。
#include
#include
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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45

【 3. 结构体变量的声明 】
- 在多个文件中调用结构体变量时,需要在一个 .h 文件中定义该结构体,再在 需要调用的 cpp 源文件中包含上述 .h 文件并 定义结构体变量,最后再在.h 文件中通过 extern 声明该结构体变量。
#include
#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
【 4. 指向结构体的指针 】
struct Books *struct_pointer;
struct_pointer = &Book1;
- 利用 -> 运算符,通过结构体指针访问结构体成员。
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 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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
