日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++深入淺出探索數據結構的原理_C 語言

作者:Kinght_123 ? 更新時間: 2022-07-23 編程語言

一、前言

因為C++的數據結構很多,很復雜,一篇文章根本講不到所有的數據結構。即使寫出來,看了一遍效果也不好,所以博主打算最近都更新C++的數據結構類型,讓讀者弄懂C++的數據結構與算法。

二、C++的數據結構

C/C++ 數組允許定義可存儲相同類型數據項的變量,但是結構是 C++ 中另一種用戶自定義的可用的數據類型,它允許您存儲不同類型的數據項。

結構用于表示一條記錄,假設您想要建立一個游戲中的英雄,您可能需要記錄下每個應用的下列屬性:

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

三、定義結構

為了定義結構,您必須使用 struct 語句。struct 語句定義了一個包含多個成員的新的數據類型。

下面是聲明一個結構體類型 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

原文鏈接:https://blog.csdn.net/Kinght_123/article/details/124958391

欄目分類
最近更新