一、概念
結構體是一種可以自定義數據類型的類型格式,一般用struct關鍵字進行定義。
//創建食物的結構體
struct Food
{//屬性名string name; //名字int Price; //價格
};
結構體有三種定義變量的方法。
1.1 定義結構體后再聲明變量,然后在對變量的屬性賦值
int main()
{Food HuiMian;HuiMian.name = "燴面";HuiMian.Price = 10;cout << HuiMian.name << endl;cout << HuiMian.Price << endl;
}
1.2 定義結構體后再聲明變量,同時對變量的屬性賦值
int main()
{Food HuiMian = { "燴面" ,10};cout << HuiMian.name << endl;cout << HuiMian.Price << endl;
}
1.3 定義結構體時聲明變量
//創建食物的結構體
struct Food
{//屬性名string name; //名字int Price; //價格
}HuiMian;
int main()
{HuiMian.name= "燴面";HuiMian.Price = 10;cout << HuiMian.name << endl;cout << HuiMian.Price << endl;
}
二、程序應用
2.1 結構體數組
結構體和數組進行結合,定義形式為:struct 結構體名 數組名[元素個數]{}
int main()
{Food Arry[2]{{"燴面",10},{"照燒雞腿飯", 20}};//物價漲了Arry[0].Price = 12;Arry[1].Price = 30;
}
2.2 結構體指針
結構體指針在學習數據結構的時候會經常遇到,需要重點掌握,用指針名 + ->來進行訪問結構體成員。
int main()
{Food Arry[2]{{"燴面",10},{"照燒雞腿飯", 30}};Arry[0].Price = 12;Food* p = &Arry[0];cout << p << endl;cout << p->name <<"的價格是:"<< p->Price << endl;
}
2.3 結構體嵌套
//定義食材的結構體
struct ShiCai
{string name;int Price;
};//創建食物的結構體
struct Food
{//屬性名string name; //名字int Price; //價格struct ShiCai shicai;
};
int main()
{Food Arry[2]{{"燴面",10,{"面條",1}},{"照燒雞腿飯", 30,{"雞腿",5}}};Arry[0].Price = 12;Food* p = &Arry[0];cout << p << endl;cout << p->name <<"的價格是:"<< p->Price <<" 包括食材:" <<p->shicai.name <<endl;
}
012FFC3C
燴面的價格是:12 包括食材:面條
2.4 結構體與函數
地址傳遞,可以更改結構體的值,反之,值傳遞不能更改:
void Print(Food *p)
{p->name = "紅燒魚";cout << p->name << "的價格是:" << p->Price << " 包括食材:" << p->shicai.name << endl;
}
int main()
{Food Arry[2]{{"燴面",10,{"面條",1}},{"照燒雞腿飯", 30,{"雞腿",5}}};Arry[0].Price = 12;Print(&Arry[0]);cout << Arry[0].name << endl;
}
紅燒魚的價格是:12 包括食材:面條
紅燒魚