zoukankan      html  css  js  c++  java
  • c++中结构体的使用

    文章链接:

    结构体定义:

    1 struct Books
    2 {
    3    char  title[50];
    4    char  author[50];
    5    char  subject[100];
    6    int   book_id;
    7 } book;
    View Code

    访问结构体成员:

     1 #include <iostream>
     2 #include <cstring>
     3  
     4 using namespace std;
     5  
     6 // 声明一个结构体类型 Books 
     7 struct Books
     8 {
     9    char  title[50];
    10    char  author[50];
    11    char  subject[100];
    12    int   book_id;
    13 };
    14  
    15 int main( )
    16 {
    17    Books Book1;        // 定义结构体类型 Books 的变量 Book1
    18    Books Book2;        // 定义结构体类型 Books 的变量 Book2
    19  
    20    // Book1 详述
    21    strcpy( Book1.title, "C++ 教程");
    22    strcpy( Book1.author, "Runoob"); 
    23    strcpy( Book1.subject, "编程语言");
    24    Book1.book_id = 12345;
    25  
    26    // Book2 详述
    27    strcpy( Book2.title, "CSS 教程");
    28    strcpy( Book2.author, "Runoob");
    29    strcpy( Book2.subject, "前端技术");
    30    Book2.book_id = 12346;
    31  
    32    // 输出 Book1 信息
    33    cout << "第一本书标题 : " << Book1.title <<endl;
    34    cout << "第一本书作者 : " << Book1.author <<endl;
    35    cout << "第一本书类目 : " << Book1.subject <<endl;
    36    cout << "第一本书 ID : " << Book1.book_id <<endl;
    37  
    38    // 输出 Book2 信息
    39    cout << "第二本书标题 : " << Book2.title <<endl;
    40    cout << "第二本书作者 : " << Book2.author <<endl;
    41    cout << "第二本书类目 : " << Book2.subject <<endl;
    42    cout << "第二本书 ID : " << Book2.book_id <<endl;
    43  
    44    return 0;
    45 }
    View Code

    结构作为函数参数:

     1 #include <iostream>
     2 #include <cstring>
     3  
     4 using namespace std;
     5 void printBook( struct Books book );
     6  
     7 // 声明一个结构体类型 Books 
     8 struct Books
     9 {
    10    char  title[50];
    11    char  author[50];
    12    char  subject[100];
    13    int   book_id;
    14 };
    15  
    16 int main( )
    17 {
    18    Books Book1;        // 定义结构体类型 Books 的变量 Book1
    19    Books Book2;        // 定义结构体类型 Books 的变量 Book2
    20  
    21     // Book1 详述
    22    strcpy( Book1.title, "C++ 教程");
    23    strcpy( Book1.author, "Runoob"); 
    24    strcpy( Book1.subject, "编程语言");
    25    Book1.book_id = 12345;
    26  
    27    // Book2 详述
    28    strcpy( Book2.title, "CSS 教程");
    29    strcpy( Book2.author, "Runoob");
    30    strcpy( Book2.subject, "前端技术");
    31    Book2.book_id = 12346;
    32  
    33    // 输出 Book1 信息
    34    printBook( Book1 );
    35  
    36    // 输出 Book2 信息
    37    printBook( Book2 );
    38  
    39    return 0;
    40 }
    41 void printBook( struct Books book )
    42 {
    43    cout << "书标题 : " << book.title <<endl;
    44    cout << "书作者 : " << book.author <<endl;
    45    cout << "书类目 : " << book.subject <<endl;
    46    cout << "书 ID : " << book.book_id <<endl;
    47 }
    View Code

    结构体指针:

    您可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:

      struct Books *struct_pointer;
    现在,您可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址,请把 & 运算符放在结构名称的前面,如下所示:

      struct_pointer = &Book1;
    为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符,如下所示:

      struct_pointer->title;

    例子:

     1 #include <iostream>
     2 #include <cstring>
     3  
     4 using namespace std;
     5 void printBook( struct Books *book );
     6  
     7 struct Books
     8 {
     9    char  title[50];
    10    char  author[50];
    11    char  subject[100];
    12    int   book_id;
    13 };
    14  
    15 int main( )
    16 {
    17    Books Book1;        // 定义结构体类型 Books 的变量 Book1
    18    Books Book2;        // 定义结构体类型 Books 的变量 Book2
    19  
    20     // Book1 详述
    21    strcpy( Book1.title, "C++ 教程");
    22    strcpy( Book1.author, "Runoob"); 
    23    strcpy( Book1.subject, "编程语言");
    24    Book1.book_id = 12345;
    25  
    26    // Book2 详述
    27    strcpy( Book2.title, "CSS 教程");
    28    strcpy( Book2.author, "Runoob");
    29    strcpy( Book2.subject, "前端技术");
    30    Book2.book_id = 12346;
    31  
    32    // 通过传 Book1 的地址来输出 Book1 信息
    33    printBook( &Book1 );
    34  
    35    // 通过传 Book2 的地址来输出 Book2 信息
    36    printBook( &Book2 );
    37  
    38    return 0;
    39 }
    40 // 该函数以结构指针作为参数
    41 void printBook( struct Books *book )
    42 {
    43    cout << "书标题  : " << book->title <<endl;
    44    cout << "书作者 : " << book->author <<endl;
    45    cout << "书类目 : " << book->subject <<endl;
    46    cout << "书 ID : " << book->book_id <<endl;
    47 }
    View Code

    关于typedef的使用和c语言中差不多。但是C与C++结构体中前者不能有函数,后者可以有。

    类与结构体在 C++ 中只有两点区别,除此这外无任何区别

    • (1)class 中默认的成员访问权限是 private 的,而 struct 中则是 public 的。
    • (2)从 class 继承默认是 private 继承,而从 struct 继承默认是 public 继承。
    • (3)class 可以定义模板,而 struct 不可以。
  • 相关阅读:
    浙江大华2012笔试题+答案解析
    腾讯2011年10月15日校招笔试+答案解析
    百度2011招聘笔试题+答案解析
    阿里巴巴2011笔试题+答案解析
    微软2012实习生笔试题+答案解析
    腾讯2012实习生笔试题+答案解析
    迅雷2012春招+答案解析
    华为2012春上机笔试题+参考程序
    中兴2011笔试题+答案解析
    mysql修改数据库名
  • 原文地址:https://www.cnblogs.com/fanhua666/p/11507051.html
Copyright © 2011-2022 走看看