c++中结构体的使用

文章链接:

结构体定义:

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

访问结构体成员:

c++中结构体的使用

 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

结构作为函数参数:

c++中结构体的使用

 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;

例子:

c++中结构体的使用

 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 不可以。

原文链接: https://www.cnblogs.com/fanhua666/p/11507051.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++中结构体的使用

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/302461

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 下午11:23
下一篇 2023年2月15日 下午11:24

相关推荐