一、概念
结构体是一种可以自定义数据类型的类型格式,一般用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 包括食材:面条
红烧鱼