我的阵列中的编码有什么问题?

时间:2012-05-05 20:37:30

标签: c++ arrays

这是我为一个有14个插槽的数组编写的代码,每个插槽除了第6个和第13个插槽外都应该有4个插槽,这些插槽将恢复为0.但是,它不能编译。有谁知道我在这里做错了什么?

using namespace std;
#include <iostream>

const int MAX = 14;

int main ()
{
    void printArray ();

    system ("pause");
    return 0;
}

void startArray (int beadArray[MAX])
{
    for(int i=0; i<MAX; i++)
    {
        beadArray[i]=4;
    }
    beadArray[6]=0;
    beadArray[13]=0;
}

//**********************************************//

void printArray ()
{
    startArray (int beadArray[MAX]);
    for(int i=0; i<MAX; i++)
    {
        cout<<i;
    }
}

2 个答案:

答案 0 :(得分:7)

startArray (int beadArray[MAX]);

您尝试声明beadArray并一步使用它。您应该在使用之前声明它:

int beadArray[MAX];
startArray (beadArray);

您还有许多其他问题:

  • using namespace std;无效,因为<iostream>尚未#include。您也不应该使用全局using namespace std;

  • system ("PAUSE");应该被替换。我个人使用:

    cin.sync(); cin.get();

  • 编译器在main()时不知道函数。在main()之前,您应该放置原型:

    void printArray(); void startArray(int []);

  • 您在main()中{li>

    void printArray();。调用函数时,只需使用函数名和参数:

    printArray();

    printArray()
  • ,您输出i而不是beadArray [i]。也没有间距。

  • 全局常量是一件坏事。

我看到的固定代码如下:

#include <iostream>

const int MAX = 14;

void startArray (int (&beadArray)[MAX]);
void printArray();

int main ()
{
    printArray ();

    std::cout << "\n\nPress enter to continue...";
    std::cin.sync();
    std::cin.get();
    return 0;
}


void startArray (int (&beadArray)[MAX])
{
    for(int i=0; i<MAX; ++i)
        beadArray[i]=4;

    beadArray[6]=0;
    beadArray[13]=0;
}

void printArray ()
{
    int beadArray[MAX];
    startArray (beadArray);

    for(int i=0; i<MAX; i++)
        std::cout << beadArray[i] << ' ';
}

我确实留下了常数,但你可以做很多事情来替换它。

答案 1 :(得分:3)

一些纠正的错误:

  • 如果要在outsite中使用它,请在startArray()函数调用之外声明您的数组。
  • 如果要修改数组,则将数组作为参考传递
  • cout&lt;&lt; beadArray [i]而不是cout&lt;&lt;我

using namespace std;    
#include <iostream>

const int MAX = 14;

int main ()    
{
    void printArray ();
    system ("pause");
    return 0;
}

void startArray (int &beadArray[MAX])
{
    for(int i=0; i<MAX; i++)
        beadArray[i]=4;
    beadArray[6]=0;
    beadArray[13]=0;
}

//**********************************************//

void printArray ()
{
    int beadArray[MAX];
    startArray (beadArray);

    for(int i=0; i<MAX; i++)
        cout<<beadArray[i];
}