最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間: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ù)組允許定義可存儲(chǔ)相同類型數(shù)據(jù)項(xiàng)的變量,但是結(jié)構(gòu)是 C++ 中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許您存儲(chǔ)不同類型的數(shù)據(jù)項(xiàng)。

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

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

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

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

下面是聲明一個(gè)結(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)成員之間的一個(gè)句號(hào)。

例子:

#include <iostream>
#include <cstring>

using namespace std;

// 聲明一個(gè)結(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 << "第一個(gè)英雄的生命值為 : " << Hero1.life_value <<endl;
  cout << "第一個(gè)英雄的名稱為 : " << Hero1.hero_name <<endl;
  cout << "第一個(gè)英雄的技能為 : " << Hero1.skill <<endl;
  cout << "第一個(gè)英雄的ID為 : " << Hero1.ID <<endl;

  cout << endl;
  // 輸出 Heor2 信息
  cout << "第二個(gè)英雄的生命值為 : " << Hero2.life_value <<endl;
  cout << "第二個(gè)英雄的生命值為 : " << Hero2.hero_name <<endl;
  cout << "第二個(gè)英雄的生命值為 : " << Hero2.skill <<endl;
  cout << "第二個(gè)英雄的ID為 : " << Hero2.ID <<endl;

  return 0;
}

輸出:

第一個(gè)英雄的生命值為 : 500
第一個(gè)英雄的名稱為 : 武器大師
第一個(gè)英雄的技能為 : 反擊風(fēng)暴
第一個(gè)英雄的ID為 : 996

第二個(gè)英雄的生命值為 : 600
第二個(gè)英雄的生命值為 : 德瑪西亞皇子
第二個(gè)英雄的生命值為 : 人在塔在
第二個(gè)英雄的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);


// 聲明一個(gè)結(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)在,您可以在上述定義的指針變量中存儲(chǔ)結(jié)構(gòu)變量的地址。為了查找結(jié)構(gòu)變量的地址,請(qǐng)把 & 運(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);


// 聲明一個(gè)結(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)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • c語言打開文件函數(shù)使用方法

    c語言打開文件函數(shù)使用方法

    這篇文章主要介紹了c語言打開文件函數(shù)使用方法,需要的朋友可以參考下
    2014-02-02
  • 詳解C++如何高效利用CPU緩存

    詳解C++如何高效利用CPU緩存

    高效利用CPU緩存是編寫高性能C++代碼的關(guān)鍵之一,所以這篇文章小編主要來和大家介紹一下C++如何實(shí)現(xiàn)高效利用CPU緩存,需要的可以參考一下
    2024-02-02
  • QT中刪除信號(hào)于槽的連接的實(shí)現(xiàn)

    QT中刪除信號(hào)于槽的連接的實(shí)現(xiàn)

    本文主要介紹了QT中刪除信號(hào)于槽的連接的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 關(guān)于C++中數(shù)據(jù)16進(jìn)制輸出的方法

    關(guān)于C++中數(shù)據(jù)16進(jìn)制輸出的方法

    本文主要介紹了關(guān)于C++中數(shù)據(jù)16進(jìn)制輸出的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • C語言指針超詳細(xì)講解下篇

    C語言指針超詳細(xì)講解下篇

    指針提供了對(duì)地址操作的一種方法,因此,使用指針可使得?C?語言能夠更高效地實(shí)現(xiàn)對(duì)計(jì)算機(jī)底層硬件的操作。另外,通過指針可以更便捷地操作數(shù)組。在一定意義上可以說,指針是?C?語言的精髓
    2022-04-04
  • c語言經(jīng)典習(xí)題之逆序字符串詳解

    c語言經(jīng)典習(xí)題之逆序字符串詳解

    這篇文章主要為大家介紹了c語言習(xí)題之逆序字符串,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 詳解C語言sscanf()函數(shù)、vsscanf()函數(shù)、vscanf()函數(shù)

    詳解C語言sscanf()函數(shù)、vsscanf()函數(shù)、vscanf()函數(shù)

    這篇文章主要介紹了詳解C語言sscanf()函數(shù)、vsscanf()函數(shù)、vscanf()函數(shù),是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • 基于C語言中野指針的深入解析

    基于C語言中野指針的深入解析

    “野指針”不是NULL指針,是指向“垃圾”內(nèi)存的指針。人們一般不會(huì)錯(cuò)用NULL指針,因?yàn)橛胕f語句很容易判斷。但是“野指針”是很危險(xiǎn)的,if語句對(duì)它不起作用
    2013-07-07
  • C++兩個(gè)cpp文件間如何進(jìn)行各自函數(shù)的調(diào)用方式

    C++兩個(gè)cpp文件間如何進(jìn)行各自函數(shù)的調(diào)用方式

    這篇文章主要介紹了C++兩個(gè)cpp文件間如何進(jìn)行各自函數(shù)的調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 《C++ primer plus》讀書筆記(一)

    《C++ primer plus》讀書筆記(一)

    本讀書筆記是C++ primer plus(第六版)前3章的學(xué)習(xí)筆記。非常的淺顯易懂,復(fù)習(xí)C++基礎(chǔ)知識(shí)的可以瞄瞄。
    2014-10-10

最新評(píng)論

墨脱县| 屯门区| 大安市| 合作市| 广平县| 新宁县| 建始县| 井冈山市| 五峰| 辽阳市| 吴忠市| 长垣县| 连南| 淮北市| 彝良县| 铁岭市| 宝丰县| 泉州市| 天等县| 西充县| 石家庄市| 昌都县| 安新县| 繁昌县| 四川省| 临洮县| 墨竹工卡县| 板桥市| 剑川县| 和林格尔县| 小金县| 拉孜县| 新兴县| 丹巴县| 峡江县| 太仆寺旗| 鄂伦春自治旗| 仪征市| 浏阳市| 西贡区| 六枝特区|