C++ 数据结构
数据结构结构是一种可以存储不同类型的数据项的数据类型。
定义结构使用 struct 语句定义结构。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:
struct book{char title[40];char author[40];float value;int book_id;}book;
访问结构成员使用成员访问运算符 " . " 访问结构的成员。成员访问运算符是结构变量名称(book)和要访问的结构成员(value、title 等)之间的一个句号。可以使用 struct 关键字来定义结构类型的变量。下面的实例演示了结构的用法:
#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <cstring>
using namespace std;
struct book{char title[50];//书名 char author[50];//作者 char subject[100];//学科 int book_id;//图书 id};
int main(){struct book book1; // 声明 Book1,类型为 bookstruct book book2; // 声明 Book2,类型为 book
}
Book title : 三国演义 Book author : 罗贯中 Book subject : 长篇小说 Book id : 1Book title : 水浒传 Book author : 施耐庵 Book subject : 长篇小说 Book id : 2
C:\Users\ll\source\repos\Project1\Debug\Project1.exe (进程 14600)已退出,代码为 0。按任意键关闭此窗口. . .
结构作为函数参数结构可以作为函数参数,传递参数的方式与其他类型的变量或指针类似。使用上面实例中的方式来访问结构变量:
#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <cstring>
using namespace std;
void printBook(struct book book);//函数声明
struct book //结构声明{char title[50];char author[50];char subject[100];int book_id;};
int main(){struct book book1; // 声明 Book1,类型为 Bookstruct book book2; // 声明 Book2,类型为 Book
}void printBook(struct book book){cout << "Book title : " << book.title << endl;cout << "Book author : " << book.author << endl;cout << "Book subject : " << book.subject << endl;cout << "Book id : " << book.book_id << endl;}
Book title : 三国演义 Book author : 罗贯中 Book subject : 长篇小说 Book id : 1Book title : 水浒传 Book author : 施耐庵 Book subject : 长篇小说 Book id : 2
C:\Users\ll\source\repos\Project1\Debug\Project1.exe (进程 13840)已退出,代码为 0。按任意键关闭此窗口. . .
指向结构的指针定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:
struct Books * struct_pointer;
struct_pointer = &Book1;
struct_pointer -> title;
#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <cstring>
using namespace std;void printBook(struct book * book);// 该函数以结构指针作为参数
struct book{char title[50];char author[50];char subject[100];int book_id;};
int main(){struct book book1; // 声明 Book1,类型为 Bookstruct book book2; // 声明 Book2,类型为 Book */
}
void printBook(struct book * book){cout << "Book title : " << book->title << endl;cout << "Book author : " << book->author << endl;cout << "Book subject : " << book->subject << endl;cout << "Book id : " << book->book_id << endl;}
Book title : 三国演义 Book author : 罗贯中 Book subject : 长篇小说 Book id : 1Book title : 水浒传 Book author : 施耐庵 Book subject : 长篇小说 Book id : 2
C:\Users\ll\source\repos\Project1\Debug\Project1.exe (进程 11768)已退出,代码为 0。按任意键关闭此窗口. . .
typedef 关键字使用关键字 “typedef ”可以为创建的结构类型另取一个"别名"。例如:
typedef struct{char title[50];char author[50];char subject[100];int book_id;}GOODBOOK;现在,可以直接使用 GOODBOOK 来定义 book 类型的变量,而不需要使用 struct 关键字,例如:
Books Book1, Book2;
评论