C++ / 構造体を函数に渡す

構造体はサイズが大きいのでポインタで渡すのが一般的との由。

#include <iostream>
#include <string>
using namespace std;

// 構造体を宣言する。
struct qb {
    string Name;
    int Att;
    int Comp;
    int Yds;
    int Td;
    int Int;
    double Rate;
};

void sute(const qb *str){ // 構造体をポインタ渡しで受け取って何かをする。
    cout << str->Name << endl;  // 要素(構造体のポインタのメンバー)を読み出すときはアロー演算子(->)を使う。
}
void sute(const qb str){ // 構造体を値渡しで受け取って何かをする。★★函数名が同じでも引数が異なるので共存が許容される。★★
    cout << str.Att << endl; // 要素(構造体のメンバー)を読み出すときはドットを使う。
}

int main(){
    // 構造体をデータ型とした排列を作る。
    qb QBs[] = {{"Rodgers, Aaron" , 30, 21, 332, 2, 0, 0},
                {"Wilson, Russell", 31, 21, 225, 2, 0, 0},
                {"Newton, Cam"    , 37, 25, 357, 3, 1, 0}};

    sute(&QBs[0]); // 構造体をポインタ渡しで函数に渡して何かをする。
    sute(QBs[1]);  // 構造体を値渡しで函数に渡して何かをする。


    system("pause");
    return 0;
}

f:id:ti-nspire:20181122062210p:plain