我试图运行这个C ++代码,但它显示我的错误,你能告诉我什么是错的吗?

时间:2015-03-09 21:28:06

标签: c++

int initfunc(int *array, int len) 
{
    int i;

    for(i=1; i <= len; i++) 
    {
        array[i] = i;
    }

    return 0;
}

int main(int argc, char* argv[])
{
    int *myarray = 0;

    initfunc(myarray, 10);
}

我在C ++中运行此代码但显示错误。你可以告诉我代码有什么问题。

1 个答案:

答案 0 :(得分:1)

首先,你必须改变行

int *myarray = 0;

您有两个选项可以在堆栈和堆上生成数组。堆栈示例如下所示:

int myarray[10];

其中10是数组的大小。 第二个你的for循环超出界限。您必须从索引0开始并迭代到数组大小-1。在我们的例子中10-1 = 9

所以你必须改变行

for(i=1; i <= len; i++)

for(i=0; i < len; i++)    

整个项目应如下所示:

int initfunc(int *array, int len) 
{
    int i;

    for(i=0; i < len; i++) 
    {
        array[i] = i;
    }

    return 0;
}

int main(int argc, char* argv[])
{
    int myarray[10];

    initfunc(myarray, 10);
}

我忽略了此示例中的某些“最佳做法”,尽可能接近您的代码。一个好的意图是只声明一次该数组的长度,并将int i引入循环范围。我把它留在这里供你尝试锻炼。

相关问题