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 ++中运行此代码但显示错误。你可以告诉我代码有什么问题。
答案 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引入循环范围。我把它留在这里供你尝试锻炼。