开发手册 欢迎您!
软件开发者资料库

C ++数据结构

C ++数据结构 - 从简单和简单的步骤学习C ++从基本到高级概念,包括C ++概述,环境设置,基本语法,注释,数据类型,变量类型,范围,常量/文字,修饰符类型,存储类,操作符,循环类型,决策,函数,数字,数组,字符串,指针,引用,日期和时间,基本输入/输出,数据结构,类和对象,面向对象语言,方法,覆盖,继承,多态,抽象,封装,接口,文件和流,STL,迭代器,算法,异常处理,动态内存,重载,模板,命名空间和信号处理,预处理器,多线程,Web编程。

C/C ++数组允许您定义组合相同类型的多个数据项的变量,但结构是另一种用户定义的数据类型,它允许您组合不同类型的数据项.

结构用于表示记录,假设您想要在库中跟踪您的图书.您可能希望跟踪每本书的以下属性 :

  • 标题

  • 作者

  • 主题

  • 图书编号

定义结构

要定义结构,必须使用struct语句. struct语句为您的程序定义一个具有多个成员的新数据类型. struct语句的格式为this :

struct [structure tag] {   member definition;   member definition;   ...   member definition;} [one or more structure variables];

结构标记是可选的,每个成员定义都是普通的变量定义,例如int i;或漂浮f;或任何其他有效的变量定义.在结构定义的最后,在最后一个分号之前,您可以指定一个或多个结构变量,但它是可选的.这是你宣布书籍结构的方式;

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

访问结构成员

要访问结构的任何成员,我们使用成员访问运算符( ).的.成员访问运算符被编码为结构变量名称和我们希望访问的结构成员之间的句点.您可以使用 struct 关键字来定义结构类型的变量.以下是解释结构用法的示例;

#include #include  using namespace std; struct Books {   char  title[50];   char  author[50];   char  subject[100];   int   book_id;}; int main() {   struct Books Book1;        // Declare Book1 of type Book   struct Books Book2;        // Declare Book2 of type Book    // book 1 specification   strcpy( Book1.title, "Learn C++ Programming");   strcpy( Book1.author, "Chand Miyan");    strcpy( Book1.subject, "C++ Programming");   Book1.book_id = 6495407;   // book 2 specification   strcpy( Book2.title, "Telecom Billing");   strcpy( Book2.author, "Yakit Singha");   strcpy( Book2.subject, "Telecom");   Book2.book_id = 6495700;    // Print Book1 info   cout << "Book 1 title : " << Book1.title <

编译并执行上述代码时,会产生以下结果 :

Book 1 title : Learn C++ ProgrammingBook 1 author : Chand MiyanBook 1 subject : C++ ProgrammingBook 1 id : 6495407Book 2 title : Telecom BillingBook 2 author : Yakit SinghaBook 2 subject : TelecomBook 2 id : 6495700

结构作为函数参数

您可以将结构作为函数参数传递,与传递任何其他变量或指针的方式非常相似.您将以与上面示例中所访问的类似方式访问结构变量 :

#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() {   struct Books Book1;        // Declare Book1 of type Book   struct Books Book2;        // Declare Book2 of type Book    // book 1 specification   strcpy( Book1.title, "Learn C++ Programming");   strcpy( Book1.author, "Chand Miyan");    strcpy( Book1.subject, "C++ Programming");   Book1.book_id = 6495407;   // book 2 specification   strcpy( Book2.title, "Telecom Billing");   strcpy( Book2.author, "Yakit Singha");   strcpy( Book2.subject, "Telecom");   Book2.book_id = 6495700;    // Print Book1 info   printBook( Book1 );   // Print Book2 info   printBook( Book2 );   return 0;}void printBook( struct Books book ) {   cout << "Book title : " << book.title <

编译并执行上述代码时,会产生以下结果 :

Book title : Learn C++ ProgrammingBook author : Chand MiyanBook subject : C++ ProgrammingBook id : 6495407Book title : Telecom BillingBook author : Yakit SinghaBook subject : TelecomBook id : 6495700

指向结构的指针

您可以定义指向结构的指针,方法与定义指向任何其他变量的指针非常相似,如下所示;

  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() {   struct Books Book1;        // Declare Book1 of type Book   struct Books Book2;        // Declare Book2 of type Book    // Book 1 specification   strcpy( Book1.title, "Learn C++ Programming");   strcpy( Book1.author, "Chand Miyan");    strcpy( Book1.subject, "C++ Programming");   Book1.book_id = 6495407;   // Book 2 specification   strcpy( Book2.title, "Telecom Billing");   strcpy( Book2.author, "Yakit Singha");   strcpy( Book2.subject, "Telecom");   Book2.book_id = 6495700;    // Print Book1 info, passing address of structure   printBook( &Book1 );   // Print Book1 info, passing address of structure   printBook( &Book2 );   return 0;}// This function accept pointer to structure as parameter.void printBook( struct Books *book ) {   cout << "Book title : " << book->title <author <subject <book_id <

编译并执行上述代码时,会产生以下结果 :

Book title : Learn C++ ProgrammingBook author : Chand MiyanBook subject : C++ ProgrammingBook id : 6495407Book title : Telecom BillingBook author : Yakit SinghaBook subject : TelecomBook id : 6495700

typedef关键字

有一种更简单的方法来定义结构,或者你可以"创建"别名类型.例如 :

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

现在,您可以直接使用 Books 来定义 Books 类型的变量,而无需使用struct关键字.以下是示例 :

  Books Book1,Book2;

您可以对非结构使用 typedef 关键字以及跟随 :

  typedef long int * pint32;  pint32 x,y,z;

x,y和z都是指向长整数的指针.