c++ 结构

c++ 结构,第1张

概述结构 结构是 C++ 中另一种用户自定义的可用的数据类型,它允许存储不同类型的数据项 比如,一本图书的结构: Title :标题 Author :作者 Subject :类目 Book ID :书的 ID 一、定义 struct type_name {member_type1 member_name1;member_type2 member_name2;member_type3 mem 结构 @H_403_8@结构是 C++ 中另一种用户自定义的可用的数据类型,它允许存储不同类型的数据项

@H_403_8@比如,一本图书的结构:

Title :标题 Author :作者 Subject :类目 Book ID :书的 ID 一、定义
struct type_name {member_type1 member_name1;member_type2 member_name2;member_type3 member_name3;..} object_names;
@H_403_8@ 

@H_403_8@type_name 是结构体类型的名称,member_type1 member_name1 是标准的变量定义,比如 int i; 或者 float f; 或者其他有效的变量定义。在结构定义的末尾,最后一个分号之前,您可以指定一个或多个结构变量,这是可选的。

@H_403_8@ 

@H_403_8@比如:

struct Books{   char  Title[50];   char  author[50];   char  subject[100];   int   book_ID;} book;
@H_403_8@ 

@H_403_8@ 

二、访问结构成员 成员访问运算符(.)
#include <iostream>#include <cstring> using namespace std; // 声明一个结构体类型 Books struct Books{   char  Title[50];   char  author[50];   char  subject[100];   int   book_ID;}; int main( ){   Books Book1;        // 定义结构体类型 Books 的变量 Book1   Books Book2;        // 定义结构体类型 Books 的变量 Book2    // Book1 详述   strcpy( Book1.Title,"C++ 教程");   strcpy( Book1.author,"Runoob");    strcpy( Book1.subject,"编程语言");   Book1.book_ID = 12345;    // Book2 详述   strcpy( Book2.Title,"CSS 教程");   strcpy( Book2.author,"Runoob");   strcpy( Book2.subject,"前端技术");   Book2.book_ID = 12346;    // 输出 Book1 信息   cout << "第一本书标题 : " << Book1.Title <<endl;   cout << "第一本书作者 : " << Book1.author <<endl;   cout << "第一本书类目 : " << Book1.subject <<endl;   cout << "第一本书 ID : " << Book1.book_ID <<endl;    // 输出 Book2 信息   cout << "第二本书标题 : " << Book2.Title <<endl;   cout << "第二本书作者 : " << Book2.author <<endl;   cout << "第二本书类目 : " << Book2.subject <<endl;   cout << "第二本书 ID : " << Book2.book_ID <<endl;    return 0;}
@H_403_8@实例中定义了结构体类似 Books 及其两个变量 Book1 和 Book2

@H_403_8@结果:

第一本书标题 : C++ 教程第一本书作者 : Runoob第一本书类目 : 编程语言第一本书 ID : 12345第二本书标题 : CSS 教程第二本书作者 : Runoob第二本书类目 : 前端技术第二本书 ID : 12346
@H_403_8@ 

@H_403_8@ 

@H_403_8@ 

三、结构作为函数参数 @H_403_8@传参方式与其他类型的变量或指针类似

#include <iostream>#include <cstring> using namespace std;voID printBook( struct Books book ); // 声明一个结构体类型 Books struct Books{   char  Title[50];   char  author[50];   char  subject[100];   int   book_ID;}; int main( ){   Books Book1;        // 定义结构体类型 Books 的变量 Book1   Books Book2;        // 定义结构体类型 Books 的变量 Book2     // Book1 详述   strcpy( Book1.Title,"前端技术");   Book2.book_ID = 12346;    // 输出 Book1 信息   printBook( Book1 );    // 输出 Book2 信息   printBook( Book2 );    return 0;}voID printBook( struct Books book ){   cout << "书标题 : " << book.Title <<endl;   cout << "书作者 : " << book.author <<endl;   cout << "书类目 : " << book.subject <<endl;   cout << "书 ID : " << book.book_ID <<endl;}
@H_403_8@ 

@H_403_8@结果:

书标题 : C++ 教程书作者 : Runoob书类目 : 编程语言书 ID : 12345书标题 : CSS 教程书作者 : Runoob书类目 : 前端技术书 ID : 12346
@H_403_8@ 

@H_403_8@ 

@H_403_8@ 

@H_403_8@ 

四、指向结构的指针 @H_403_8@

@H_403_8@ 

@H_403_8@ 

#include <iostream>#include <cstring> using namespace std;voID printBook( struct Books *book ); struct Books{   char  Title[50];   char  author[50];   char  subject[100];   int   book_ID;}; int main( ){   Books Book1;        // 定义结构体类型 Books 的变量 Book1   Books Book2;        // 定义结构体类型 Books 的变量 Book2     // Book1 详述   strcpy( Book1.Title,"前端技术");   Book2.book_ID = 12346;    // 通过传 Book1 的地址来输出 Book1 信息   printBook( &Book1 );    // 通过传 Book2 的地址来输出 Book2 信息   printBook( &Book2 );    return 0;}// 该函数以结构指针作为参数voID printBook( struct Books *book ){   cout << "书标题  : " << book->Title <<endl;   cout << "书作者 : " << book->author <<endl;   cout << "书类目 : " << book->subject <<endl;   cout << "书 ID : " << book->book_ID <<endl;}
@H_403_8@ 

@H_403_8@ 结果:

书标题  : C++ 教程书作者 : Runoob书类目 : 编程语言书 ID : 12345书标题  : CSS 教程书作者 : Runoob书类目 : 前端技术书 ID : 12346
@H_403_8@ 

@H_403_8@ 

@H_403_8@ 

@H_403_8@ 

 五、typedef 关键字 @H_403_8@

@H_403_8@ 

@H_403_8@ 

@H_403_8@ 

补充: @H_403_8@1.类与结构体的区别,除此这外无任何区别。

(1)class 中默认的成员访问权限是 private 的,而 struct 中则是 public 的。 (2)从 class 继承默认是 private 继承,而从 struct 继承默认是 public 继承。 (3)class 可以定义模板,而 struct 不可以。 @H_403_8@更多内容参考:结构体变量和结构体类型的定义

@H_403_8@ 

@H_403_8@ 

@H_403_8@2.

@H_403_8@

@H_403_8@ 

@H_403_8@ 

@H_403_8@ 3.

@H_403_8@

@H_403_8@ 

@H_403_8@ 

@H_403_8@ 

@H_403_8@ 

@H_403_8@

@H_403_8@ 

@H_403_8@ 

@H_403_8@ 

@H_403_8@@H_404_727@4.   . 与 -> 运算符

@H_403_8@ 

@H_403_8@ 

@H_403_8@ 

@H_403_8@ 

 5.可以将结构作为函数的返回值
#include <stdio.h>#include <stdlib.h>struct test{    int i;    char c;    double d;    float f;};struct test set( int a,float b,char c,double d ){    struct test t;    t.i = a;    t.f = b;    t.c = c;    t.d = d;    return t;}voID sig( int s );voID print(struct test t2){    printf("int:%d\n",t2.i);    printf("char:%c\n",t2.c);    printf("float:%f\n",t2.f);    printf("double:%lf\n",t2.d);}voID sig( int s ){    printf("捕获信号%d,跳出……",s);    exit(1);}int main( voID ){    struct test info;    info = set(2,3.22,d,4.335);    print(info);    return 0;}
总结

以上是内存溢出为你收集整理的c++ 结构全部内容,希望文章能够帮你解决c++ 结构所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1211959.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存