写点什么

C++ 数据结构

作者:老浩
  • 2023-02-06
    内蒙古
  • 本文字数:2499 字

    阅读完需:约 8 分钟

数据结构结构是一种可以存储不同类型的数据项的数据类型。


定义结构使用 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


// Book1 strcpy(book1.title, "三国演义");//将 "三国演义"拷贝到book.title指向的位置strcpy(book1.author, "罗贯中");strcpy(book1.subject, "长篇小说");book1.book_id = 000001;
// Book2 strcpy(book2.title, "水浒传");strcpy(book2.author, "施耐庵");strcpy(book2.subject, "长篇小说");book2.book_id = 000002;
// 输出 Book1 的信息cout << "Book 1 title : " << book1.title << endl;cout << "Book 1 author : " << book1.author << endl;cout << "Book 1 subject : " << book1.subject << endl;cout << "Book 1 id : " << book1.book_id << endl;
// 输出 Book2 的信息cout << "Book 2 title : " << book2.title << endl;cout << "Book 2 author : " << book2.author << endl;cout << "Book 2 subject : " << book2.subject << endl;cout << "Book 2 id : " << book2.book_id << endl;
return 0;
复制代码


}


    编译和执行上面的代码:
复制代码


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


// Book1 strcpy(book1.title, "三国演义");strcpy(book1.author, "罗贯中");strcpy(book1.subject, "长篇小说");book1.book_id = 000001;
// Book2 strcpy(book2.title, "水浒传");strcpy(book2.author, "施耐庵");strcpy(book2.subject, "长篇小说");book2.book_id = 000002;
printBook(book1); //把结构book1作为函数参数传递,输出 book1 的信息
printBook(book2); //把结构book2作为函数参数传递,输出 book2 的信息
return 0;
复制代码


}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;


    在指针变量中存储结构变量(比如book1)的地址。如下所示:
复制代码


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 */


// Book1 strcpy(book1.title, "三国演义");strcpy(book1.author, "罗贯中");strcpy(book1.subject, "长篇小说");book1.book_id = 000001;
// Book2 strcpy(book2.title, "水浒传");strcpy(book2.author, "施耐庵");strcpy(book2.subject, "长篇小说");book2.book_id = 000002;
printBook(&book1);//把结构book1的地址作为函数参数传递,输出 book1 的信息
printBook(&book2);//把结构book2的地址作为函数参数传递,输出 book2 的信息
return 0;
复制代码


}


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;


用户头像

老浩

关注

一杯清茶,一段code,成就一个淡然的人生。 2020-12-21 加入

专注于网络通信技术研究与开发,以及相关架构设计。

评论

发布
暂无评论
C++数据结构_老浩_InfoQ写作社区