C++結構體數組:定義和使用詳解

一、什麼是結構體數組

結構體是C語言和C++語言中的一種構造類型,結構體可以將多個不同的數據類型組合在一起成為一個新的數據類型。而結構體數組,則是將多個相同的結構體按照一定順序存儲在一起形成一個數組。

struct student{
    char name[20];
    int age;
    float score;
};

int main(){
    student s[5];
    return 0;
}

以上代碼定義了一個名為student的結構體,包含了學生的姓名、年齡和分數三個屬性。同時,該代碼定義了一個包含5個元素的結構體數組s。

二、如何定義和初始化結構體數組

定義結構體數組和定義基本類型數組一樣,需要指定數組類型、數組名和數組大小。在C++語言中,我們可以使用結構體的構造函數對結構體數組進行初始化。

struct student{
    char name[20];
    int age;
    float score;
    student(char* n, int a, float s):age(a),score(s) {
        strcpy(name,n);
    }
};

int main(){
    student s[3] = {
        student("Jack",20,95.5),
        student("Lucy",19,86.0),
        student("Tom",21,78.5)
    };
    return 0;
}

以上代碼定義了一個帶有構造函數的student結構體,並對一個包含3個元素的結構體數組s進行了初始化。需要注意的是,在結構體數組的初始化過程中,需要為每個元素都提供相應的初始化值。

三、如何通過索引訪問結構體數組元素

結構體數組的元素訪問方式和一般數組的訪問方式相同,使用結構體數組名和元素索引即可訪問。

struct student{
    char name[20];
    int age;
    float score;
};

int main(){
    student s[3] = {
        {"Jack",20,95.5},
        {"Lucy",19,86.0},
        {"Tom",21,78.5}
    };
    cout<<s[0].name<<" "<<s[0].age<<" "<<s[0].score<<endl;
    return 0;
}

以上代碼演示了通過索引訪問結構體數組元素的方法。在C++語言中,使用”.”來訪問結構體成員。

四、如何遍歷結構體數組

遍歷結構體數組的方法和遍歷一般數組的方法相同,使用循環結構即可。

struct student{
    char name[20];
    int age;
    float score;
};

int main(){
    student s[3] = {
        {"Jack",20,95.5},
        {"Lucy",19,86.0},
        {"Tom",21,78.5}
    };
    for(int i=0;i<3;i++){
        cout<<s[i].name<<" "<<s[i].age<<" "<<s[i].score<<endl;
    }
    return 0;
}

以上代碼演示了結構體數組的遍歷方法。

五、結構體數組作為函數參數的傳遞

結構體數組作為函數參數的傳遞方式和一般數組的傳遞方式相同,可以使用指針和數組名稱兩種方式進行傳遞。

struct student{
    char name[20];
    int age;
    float score;
};

void print(student* stu, int n){
    for(int i=0;i<n;i++){
        cout<<stu[i].name<<" "<<stu[i].age<<" "<<stu[i].score<<endl;
    }
}

int main(){
    student s[3] = {
        {"Jack",20,95.5},
        {"Lucy",19,86.0},
        {"Tom",21,78.5}
    };
    print(s,3);
    return 0;
}

以上代碼演示了結構體數組作為函數參數傳遞的方法。

六、結構體數組的排序

結構體數組的排序需要定義一個比較函數,對結構體數組中的元素按照指定規則進行排序。

struct student{
    char name[20];
    int age;
    float score;
};

bool cmp(const student& a, const student& b){
    return a.score > b.score;
}

int main(){
    student s[3] = {
        {"Jack",20,95.5},
        {"Lucy",19,86.0},
        {"Tom",21,78.5}
    };
    sort(s,s+3,cmp);
    for(int i=0;i<3;i++){
        cout<<s[i].name<<" "<<s[i].age<<" "<<s[i].score<<endl;
    }
    return 0;
}

以上代碼演示了結構體數組按照分數從高到低進行排序的方法。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/242794.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:52
下一篇 2024-12-12 12:52

相關推薦

  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • Python去掉數組的中括弧

    在Python中,被中括弧包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括弧。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python中的隊列定義

    本篇文章旨在深入闡述Python中隊列的定義及其應用,包括隊列的定義、隊列的類型、隊列的操作以及隊列的應用。同時,我們也會為您提供Python代碼示例。 一、隊列的定義 隊列是一種…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python符號定義和使用方法

    本文將從多個方面介紹Python符號的定義和使用方法,涉及注釋、變數、運算符、條件語句和循環等多個方面。 一、注釋 1、單行注釋 # 這是一條單行注釋 2、多行注釋 “”” 這是一…

    編程 2025-04-29
  • Vue TS工程結構用法介紹

    在本篇文章中,我們將從多個方面對Vue TS工程結構進行詳細的闡述,涵蓋文件結構、路由配置、組件間通訊、狀態管理等內容,並給出對應的代碼示例。 一、文件結構 一個好的文件結構可以極…

    編程 2025-04-29
  • Python編程技巧:如何定義一個函數n!,並計算5!

    在這篇文章中,我們將研究如何使用Python編程語言定義一個能夠計算階乘的函數,並且演示如何使用該函數計算5!。 一、階乘函數的定義 在Python中,我們可以使用一個簡單的遞歸函…

    編程 2025-04-29

發表回復

登錄後才能評論