gam*_*l22 -4 c++ arrays structure function
你好,我对如何在不使用指针的情况下通过带有结构的函数正确传递数组感到困惑.我们只应该使用第1-8章,其中不包括指针..这里是我的代码,如果有人有任何建议或链接,以帮助谢谢!
const int MAX_DATA = 10000;
struct Inventory
{
double sku;
double count;
double cost;
string title;
};
void addMovie(Inventory data[], double count);
void allInfo(Inventory data[], double count);
int main ()
{
Inventory data[MAX_DATA];
int choice;
int i = 0;
double count = 0;
return 0;
}
void addMovie(Inventory data[], double count)
{
int i = 0;
cout << "Please enter the name of the movie you wish to add " << endl;
cin >> data[i].title;
cin.ignore();
cout << "Please enter the SKU " << endl;
cin >> data[i].sku;
cout << "You have successfully added " << data[i].title << " : " << data[i].sku << endl;
i++;
count++;
}
void allInfo(Inventory all[], double count)
{
for (int i = 0; i < count; i++)
{
cout << "Title: " << all[i].title << endl;
cout << "SKU: " << all[i].sku << endl;
i++;
}
}
Run Code Online (Sandbox Code Playgroud)
对于固定大小的数组,这样的东西应该工作,通过引用传递数组:
template <unsigned long N>
void addMovie(Inventory (&data)[N], unsigned long& count)
{
std::cout << "addMovie has an array of size " << N << "\n";
}
...
Inventory data[MAX_DATA];
unsigned long counter = 0;
addMovie(data, counter);
Run Code Online (Sandbox Code Playgroud)
请注意,这将使您必须确保不超出数组的范围.
这样会更容易使用std::vector<Inventory>,在这种情况下,您不必担心引用语法的维度或奇怪的passign数组:
void addMovie(std::vector<Inventory>& data)
{
std::cout << "addMovie has an array of size " << data.size() << "\n";
Inventory invent = ....;
data.push_back(invent)
}
....
std::vector<Inventory> data;
addMovie(data);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
850 次 |
| 最近记录: |