欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++深入淺出探索數(shù)據(jù)結(jié)構(gòu)的原理

 更新時間:2022年05月25日 09:30:37   作者:Kinght_123  
C++的數(shù)據(jù)結(jié)構(gòu)很多,很復(fù)雜,所以本文將通過示例帶大家深入了解一下C++中的數(shù)據(jù)結(jié)構(gòu)與算法。文中的示例代碼講解詳細(xì),感興趣的可以了解一下

一、前言

因?yàn)镃++的數(shù)據(jù)結(jié)構(gòu)很多,很復(fù)雜,一篇文章根本講不到所有的數(shù)據(jù)結(jié)構(gòu)。即使寫出來,看了一遍效果也不好,所以博主打算最近都更新C++的數(shù)據(jù)結(jié)構(gòu)類型,讓讀者弄懂C++的數(shù)據(jù)結(jié)構(gòu)與算法。

二、C++的數(shù)據(jù)結(jié)構(gòu)

C/C++ 數(shù)組允許定義可存儲相同類型數(shù)據(jù)項(xiàng)的變量,但是結(jié)構(gòu)是 C++ 中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許您存儲不同類型的數(shù)據(jù)項(xiàng)。

結(jié)構(gòu)用于表示一條記錄,假設(shè)您想要建立一個游戲中的英雄,您可能需要記錄下每個應(yīng)用的下列屬性:

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

三、定義結(jié)構(gòu)

為了定義結(jié)構(gòu),您必須使用 struct 語句。struct 語句定義了一個包含多個成員的新的數(shù)據(jù)類型。

下面是聲明一個結(jié)構(gòu)體類型 Heros,變量為 hero:

例子:

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

四、訪問結(jié)構(gòu)成員

為了訪問結(jié)構(gòu)的成員,我們使用成員訪問運(yùn)算符(.)。成員訪問運(yùn)算符是結(jié)構(gòu)變量名稱和我們要訪問的結(jié)構(gòu)成員之間的一個句號。

例子:

#include <iostream>
#include <cstring>

using namespace std;

// 聲明一個結(jié)構(gòu)體類型 Heros
struct Heros
{
  char  life_value[50];
  char  hero_name[50];
  char  skill[100];
  int   ID;
} hero;

int main( )
{
  Heros(Hero1);        // 定義結(jié)構(gòu)體類型 Heros 的變量 Hero1
  Heros(Hero2);        // 定義結(jié)構(gòu)體類型 Heros 的變量 Hero2

  // Hero1 詳述
  strcpy( Hero1.life_value, "500");
  strcpy( Hero1.hero_name, "武器大師");
  strcpy( Hero1.skill, "反擊風(fēng)暴");
  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
第一個英雄的名稱為 : 武器大師
第一個英雄的技能為 : 反擊風(fēng)暴
第一個英雄的ID為 : 996

第二個英雄的生命值為 : 600
第二個英雄的生命值為 : 德瑪西亞皇子
第二個英雄的生命值為 : 人在塔在
第二個英雄的ID為 : 7

五、結(jié)構(gòu)作為函數(shù)參數(shù)

您可以把結(jié)構(gòu)作為函數(shù)參數(shù),傳參方式與其他類型的變量或指針類似。您可以使用上面實(shí)例中的方式來訪問結(jié)構(gòu)變量:

#include <iostream>
#include <cstring>

using namespace std;
void printHero(struct Heros hero);


// 聲明一個結(jié)構(gòu)體類型 Heros
struct Heros
{
  char  life_value[50];
  char  hero_name[50];
  char  skill[100];
  int   ID;
} hero;

int main( )
{
  Heros(Hero1);        // 定義結(jié)構(gòu)體類型 Heros 的變量 Hero1
  Heros(Hero2);        // 定義結(jié)構(gòu)體類型 Heros 的變量 Hero2

  // Hero1 詳述
  strcpy( Hero1.life_value, "500");
  strcpy( Hero1.hero_name, "武器大師");
  strcpy( Hero1.skill, "反擊風(fēng)暴");
  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
英雄的名稱:武器大師
英雄的技能:反擊風(fēng)暴
英雄的ID:996
英雄的生命值:600
英雄的名稱:德瑪西亞皇子
英雄的技能:人在塔在
英雄的ID:7

六、指向結(jié)構(gòu)的指針

您可以定義指向結(jié)構(gòu)的指針,方式與定義指向其他類型變量的指針相似,如下所示:

struct Books *struct_pointer;

現(xiàn)在,您可以在上述定義的指針變量中存儲結(jié)構(gòu)變量的地址。為了查找結(jié)構(gòu)變量的地址,請把 & 運(yùn)算符放在結(jié)構(gòu)名稱的前面,如下所示:

struct_pointer = &Book1;

為了使用指向該結(jié)構(gòu)的指針訪問結(jié)構(gòu)的成員,您必須使用 -> 運(yùn)算符,如下所示:

struct_pointer->title;

例子:

#include <iostream>
#include <cstring>

using namespace std;
void printHero(struct Heros *hero);


// 聲明一個結(jié)構(gòu)體類型 Heros
struct Heros
{
  char  life_value[50];
  char  hero_name[50];
  char  skill[100];
  int   ID;
};

int main( )
{
  Heros(Hero1);        // 定義結(jié)構(gòu)體類型 Heros 的變量 Hero1
  Heros(Hero2);        // 定義結(jié)構(gòu)體類型 Heros 的變量 Hero2

  // Hero1 詳述
  strcpy( Hero1.life_value, "500");
  strcpy( Hero1.hero_name, "武器大師");
  strcpy( Hero1.skill, "反擊風(fēng)暴");
  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
英雄的名稱:武器大師
英雄的技能:反擊風(fēng)暴
英雄的ID:996
英雄的生命值:600
英雄的名稱:德瑪西亞皇子
英雄的技能:人在塔在
英雄的ID:7

以上就是C++深入淺出探索數(shù)據(jù)結(jié)構(gòu)的原理的詳細(xì)內(nèi)容,更多關(guān)于C++數(shù)據(jù)結(jié)構(gòu)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • c++實(shí)現(xiàn)值機(jī)系統(tǒng)

    c++實(shí)現(xiàn)值機(jī)系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了c++實(shí)現(xiàn)在線值機(jī)系統(tǒng)程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言實(shí)現(xiàn)的階乘,排列和組合實(shí)例

    C語言實(shí)現(xiàn)的階乘,排列和組合實(shí)例

    這篇文章主要介紹了C語言實(shí)現(xiàn)的階乘,排列和組合的方法,涉及C語言數(shù)學(xué)運(yùn)算的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • C++11中的時間庫std::chrono(引發(fā)關(guān)于時間的思考)

    C++11中的時間庫std::chrono(引發(fā)關(guān)于時間的思考)

    這篇文章主要介紹了C++11中的時間庫std::chrono(引發(fā)關(guān)于時間的思考),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • C語言判斷語句和if語句形式及多層if使用示例

    C語言判斷語句和if語句形式及多層if使用示例

    這篇文章主要為大家介紹了C語言判斷語句和if語句形式及多層if使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • c++ vector模擬實(shí)現(xiàn)代碼

    c++ vector模擬實(shí)現(xiàn)代碼

    vector是C++ STL中一個非常重要的容器,了解 vector 的底層實(shí)現(xiàn)原理,可以很好的幫助我們更加熟練的使用vector。這篇文章通過實(shí)例代碼給大家介紹c++ vector模擬實(shí)現(xiàn),感興趣的朋友跟隨小編一起看看吧
    2020-02-02
  • C++應(yīng)用Eigen庫對應(yīng)實(shí)現(xiàn)matlab中部分函數(shù)問題

    C++應(yīng)用Eigen庫對應(yīng)實(shí)現(xiàn)matlab中部分函數(shù)問題

    這篇文章主要介紹了C++應(yīng)用Eigen庫對應(yīng)實(shí)現(xiàn)matlab中部分函數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • C++實(shí)現(xiàn)LeetCode(676.實(shí)現(xiàn)神奇字典)

    C++實(shí)現(xiàn)LeetCode(676.實(shí)現(xiàn)神奇字典)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(676.實(shí)現(xiàn)神奇字典),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 使用C語言編寫一個強(qiáng)制關(guān)機(jī)程序

    使用C語言編寫一個強(qiáng)制關(guān)機(jī)程序

    這篇文章主要為大家詳細(xì)介紹了如何使用C語言實(shí)現(xiàn)一個簡單的"流氓軟件",一個可以強(qiáng)制關(guān)機(jī)惡作劇關(guān)機(jī)程序,輸入指定指令才可以解除,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-11-11
  • C++ 反射機(jī)制詳解及實(shí)例代碼

    C++ 反射機(jī)制詳解及實(shí)例代碼

    這篇文章主要介紹了C++ 反射機(jī)制詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • C和C++如何實(shí)現(xiàn)互相調(diào)用詳解

    C和C++如何實(shí)現(xiàn)互相調(diào)用詳解

    在學(xué)習(xí)c++中用到一些古老的c語言庫時,在工作中我們經(jīng)常要使用C和C++混合編程,下面這篇文章主要給大家介紹了關(guān)于C和C++如何實(shí)現(xiàn)互相調(diào)用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01

最新評論