数组和函数c ++

时间:2013-12-10 11:15:02

标签: c++ arrays

我构建了一个程序,接受来自用户的两个输入,使用循环内的数组,它被传递给一个类中的一个函数,该类将显示两个数字。

问题是当用户输入一个数字并且它是1.程序不断要求用户输入一个数字,当输入2时,程序询问另一个数字并结束,但例如你输入了2和3 ...... 。然后输出2和4(所以3 + 1),最后一个数字加1。这是代码:

main.cpp中:

#include <iostream>
#include "newclass.h"
using namespace std;
int main()
{
    int array_variable_main[2];
    for(int counter = 1; counter <= 2; counter=counter+1)
    {
        cout << "Enter a Number: " << endl;
        cin >> array_variable_main[counter];
    }
    newclass sum_object;
    sum_object.loop_function(array_variable_main, 2);
    return 0;
}

newclass.cpp:

#include "newclass.h"
#include <iostream>
using namespace std;
newclass::newclass()
{
}
void newclass::loop_function(int array_variable[], int arraysize)
{
    cout << "The numbers that are stored in the array are: " << endl;
    for(int counter = 1; counter <= arraysize; counter = counter+1)
    {
        cout << array_variable[counter] << endl;
    }
}

newclass.h:

#ifndef NEWCLASS_H
#define NEWCLASS_H
class newclass
{
public:
    newclass();
    void loop_function(int array_variable[], int arraysize);
};
#endif // NEWCLASS_H

2 个答案:

答案 0 :(得分:2)

你必须记住数组索引从零到大小为1。所以对于你的阵列来说,它是零和一。除此之外的任何事情都会导致未定义的行为。未定义的行为无法轻易预测,因此您的程序结果可能是任何结果。

答案 1 :(得分:2)

在C和C ++中,数组索引通常从0开始,所以

int array_variable_main[2];
for(int counter = 1; counter <= 2; counter=counter+1)
{
  cout << "Enter a Number: " << endl;
  cin >> array_variable_main[counter];
}

将在数组外部访问

改为

int array_variable_main[2];
for(int counter = 0; counter < 2; ++counter)
{
  cout << "Enter a Number: " << endl;
  cin >> array_variable_main[counter];
}