不确定此循环的条件(指针算术)

时间:2015-09-18 03:29:08

标签: c++

所以我应该根据评论中的要求编辑一堆代码。我已经掌握了大部分内容,但有一部分让我陷入困境。它像原始一样循环,但我无法弄清楚循环的条件应该是什么,而且我放的东西最终会崩溃。我认为这是sizeof的东西?但我没有尝试过。任何帮助将不胜感激!

原件:

int main()
{
const string ID_BASE = "56-123-";
// CHANGE STATIC ARRAY INTO DYNAMIC ARRAY.
const int NUM_PRODUCTS = 5;
Product products[NUM_PRODUCTS];
int i;

//cout << "Enter number of toys: ";
//cin >> numProducts;

   ....Code to fill products...

//ALTER LOOP TO USE ONLY POINTER OPERATIONS
// (NO SUBSCRIPTS).
for (i = 0; i < numProducts; i++)
{
    show(products[i]);
}

我的更改:

int main()
{
const string ID_BASE = "56-123-";
// CHANGE STATIC ARRAY INTO DYNAMIC ARRAY.
int numProducts;
Product *products;
int i;

cout << "Enter number of toys: ";
cin >> numProducts;

products = new Product[numProducts];

...Code to fill products...

//ALTER LOOP TO USE ONLY POINTER OPERATIONS
// (NO SUBSCRIPTS).
for (Product *prodP = products;          ; *prodP++)
{
    show(*prodP);
}

3 个答案:

答案 0 :(得分:1)

条件:

prodP !=products+numProducts;

答案 1 :(得分:0)

执行迭代器样式:

{{1}}

答案 2 :(得分:0)

也许我在这里遗漏了一些东西,但修改后的循环何时结束?

for (Product *prodP = products;          ; *prodP++)
{
    show(*prodP);
}

只有有限元素,我认为你过度运行数组。

使用valgrind配置这些错误/可疑错误。