C++深入浅出探索数据结构的原理

2022-05-25 12:07:55
目录
一、前言二、C++的数据结构三、定义结构四、访问结构成员五、结构作为函数参数六、指向结构的指针

一、前言

因为C++的数据结构很多,很复杂,一篇文章根本讲不到所有的数据结构。即使写出来,看了一遍效果也不好,所以博主打算最近都更新C++的数据结构类型,让读者弄懂C++的数据结构与算法。

二、C++的数据结构

C/C++>

结构用于表示一条记录,假设您想要建立一个游戏中的英雄,您可能需要记录下每个应用的下列属性:

    life_value:生命值hero_name:英雄名称skill:技能ID:英雄id

    三、定义结构

    为了定义结构,您必须使用>

    下面是声明一个结构体类型 Heros,变量为 hero:

    例子:

    struct Heros
    {
       char  life_value[50];
       char  hero_name[50];
       char  skill[100];
       int   ID;
    } hero;
    

    四、访问结构成员

    为了访问结构的成员,我们使用成员访问运算符(.)。成员访问运算符是结构变量名称和我们要访问的结构成员之间的一个句号。

    例子:

    #include <iostream>
    #include <cstring>
    
    using namespace std;
    
    // 声明一个结构体类型 Heros
    struct Heros
    {
      char  life_value[50];
      char  hero_name[50];
      char  skill[100];
      int   ID;
    } hero;
    
    int main( )
    {
      Heros(Hero1);        // 定义结构体类型 Heros 的变量 Hero1
      Heros(Hero2);        // 定义结构体类型 Heros 的变量 Hero2
    
      // Hero1 详述
      strcpy( Hero1.life_value, "500");
      strcpy( Hero1.hero_name, "武器大师");
      strcpy( Hero1.skill, "反击风暴");
      Hero1.ID = 996;
    
      // Hero2 详述
      strcpy( Hero2.life_value, "600");
      strcpy( Hero2.hero_name, "德玛西亚皇子");
      strcpy( Hero2.skill, "人在塔在");
      Hero2.ID = 007;
    
      // 输出 Hero1 信息
      cout << "第一个英雄的生命值为 : " << Hero1.life_value <<endl;
      cout << "第一个英雄的名称为 : " << Hero1.hero_name <<endl;
      cout << "第一个英雄的技能为 : " << Hero1.skill <<endl;
      cout << "第一个英雄的ID为 : " << Hero1.ID <<endl;
    
      cout << endl;
      // 输出 Heor2 信息
      cout << "第二个英雄的生命值为 : " << Hero2.life_value <<endl;
      cout << "第二个英雄的生命值为 : " << Hero2.hero_name <<endl;
      cout << "第二个英雄的生命值为 : " << Hero2.skill <<endl;
      cout << "第二个英雄的ID为 : " << Hero2.ID <<endl;
    
      return 0;
    }
    

    输出:

    第一个英雄的生命值为 : 500
    第一个英雄的名称为 : 武器大师
    第一个英雄的技能为 : 反击风暴
    第一个英雄的ID为 : 996

    第二个英雄的生命值为 : 600
    第二个英雄的生命值为 : 德玛西亚皇子
    第二个英雄的生命值为 : 人在塔在
    第二个英雄的ID为 : 7

    五、结构作为函数参数

    您可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。您可以使用上面实例中的方式来访问结构变量:

    #include <iostream>
    #include <cstring>
    
    using namespace std;
    void printHero(struct Heros hero);
    
    
    // 声明一个结构体类型 Heros
    struct Heros
    {
      char  life_value[50];
      char  hero_name[50];
      char  skill[100];
      int   ID;
    } hero;
    
    int main( )
    {
      Heros(Hero1);        // 定义结构体类型 Heros 的变量 Hero1
      Heros(Hero2);        // 定义结构体类型 Heros 的变量 Hero2
    
      // Hero1 详述
      strcpy( Hero1.life_value, "500");
      strcpy( Hero1.hero_name, "武器大师");
      strcpy( Hero1.skill, "反击风暴");
      Hero1.ID = 996;
    
      // Hero2 详述
      strcpy( Hero2.life_value, "600");
      strcpy( Hero2.hero_name, "德玛西亚皇子");
      strcpy( Hero2.skill, "人在塔在");
      Hero2.ID = 007;
    
      // 输出 Hero1 信息
      printHero(Hero1);
    
      // 输出 Hero2 信息
      printHero(Hero2);
    
      return 0;
    }
    void printHero(struct Heros hero)
    {
      cout << "英雄的生命值:" << hero.life_value << endl;
      cout << "英雄的名称:" << hero.hero_name << endl;
      cout << "英雄的技能:" << hero.skill << endl;
      cout << "英雄的ID:" << hero.ID << endl;
    }
    

    输出:

    英雄的生命值:500
    英雄的名称:武器大师
    英雄的技能:反击风暴
    英雄的ID:996
    英雄的生命值:600
    英雄的名称:德玛西亚皇子
    英雄的技能:人在塔在
    英雄的ID:7

    六、指向结构的指针

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

    struct Books *struct_pointer;
    

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

    struct_pointer = &Book1;
    

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

    struct_pointer->title;
    

    例子:

    #include <iostream>
    #include <cstring>
    
    using namespace std;
    void printHero(struct Heros *hero);
    
    
    // 声明一个结构体类型 Heros
    struct Heros
    {
      char  life_value[50];
      char  hero_name[50];
      char  skill[100];
      int   ID;
    };
    
    int main( )
    {
      Heros(Hero1);        // 定义结构体类型 Heros 的变量 Hero1
      Heros(Hero2);        // 定义结构体类型 Heros 的变量 Hero2
    
      // Hero1 详述
      strcpy( Hero1.life_value, "500");
      strcpy( Hero1.hero_name, "武器大师");
      strcpy( Hero1.skill, "反击风暴");
      Hero1.ID = 996;
    
      // Heor2 详述
      strcpy( Hero2.life_value, "600");
      strcpy( Hero2.hero_name, "德玛西亚皇子");
      strcpy( Hero2.skill, "人在塔在");
      Hero2.ID = 007;
    
      // 通过传 Hero1 的地址来输出 Hero1 信息
      printHero(&Hero1);
    
      // 通过传 Hero2 的地址来输出 Hero2 信息
      printHero(&Hero2);
    
      return 0;
    }
    void printHero(struct Heros *hero)
    {
      cout << "英雄的生命值:" << hero->life_value << endl;
      cout << "英雄的名称:" << hero->hero_name << endl;
      cout << "英雄的技能:" << hero->skill << endl;
      cout << "英雄的ID:" << hero->ID << endl;
    }
    

    输出:

    英雄的生命值:500
    英雄的名称:武器大师
    英雄的技能:反击风暴
    英雄的ID:996
    英雄的生命值:600
    英雄的名称:德玛西亚皇子
    英雄的技能:人在塔在
    英雄的ID:7

    以上就是C++深入浅出探索数据结构的原理的详细内容,更多关于C++数据结构的资料请关注易采站长站其它相关文章!