学习C++ – C++结构体
这是一个满足这些需求的结构体描述:
struct Product // structure declaration { char name[20]; float volume; double price; };
关键字struct表示代码定义了一个结构体的布局。
标识符Product是此表单的名称或标签。
这使Product为新类型的名称。
#include <iostream>
struct Product // structure declaration
{
char name[20];
float volume;
double price;
};
int main()
{
using namespace std;
Product guest =
{
"C++", // name value
1.8, // volume value
29.9 // price value
};
Product pal =
{
"Java",
3.1,
32.9
}; // pal is a second variable of type Product
cout << "Expand your guest list with " << guest.name;
cout << " and " << pal.name << "!\n";
cout << "You can have both for $";
cout << guest.price + pal.price << "!\n";
return 0;
}
上面的代码生成以下结果。
例子
以下代码显示了如何分配结构体。
#include <iostream>
using namespace std;
struct Product
{
char name[20];
float volume;
double price;
};
int main()
{
Product bouquet = { "C++", 0.20, 12.49 };
Product choice;
cout << "bouquet: " << bouquet.name << " for $";
cout << bouquet.price << endl;
choice = bouquet; // assign one structure to another
cout << "choice: " << choice.name << " for $";
cout << choice.price << endl;
return 0;
}
上面的代码生成以下结果。
结构体数组
可以创建其元素是结构体的数组。
例如,要创建一个100个产品结构体的数组,您可以执行以下操作:
Product gifts[100]; // array of 100 Product structures cin >> gifts[0].volume; // use volume member of first struct cout << gifts[99].price << endl; // display price member of last struct
要初始化一个结构体数组,您将将数组初始化的规则与结构体规则相结合。
因为数组的每个元素都是一个结构体,它的值由结构体初始化表示。
Product guests[2] = // initializing an array of structs { {"A", 0.5, 21.99}, // first structure in array {"B", 2000, 565.99} // next structure in array };
以下代码显示了一个使用结构体数组的简短示例。
#include <iostream>
using namespace std;
struct Product
{
char name[20];
float volume;
double price;
};
int main()
{
Product guests[2] = // initializing an array of structs
{
{"A", 0.5, 21.99}, // first structure in array
{"B", 2, 5.99} // next structure in array
};
cout << "The guests " << guests[0].name << " and " << guests[1].name
<< "\nhave a combined volume of "
<< guests[0].volume + guests[1].volume << " cubic feet.\n";
return 0;
}
上面的代码生成以下结果。