我试图在C ++中运行此代码,但显示错误,你能告诉我错误吗?

时间:2015-03-09 21:35:20

标签: 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);
}

1 个答案:

答案 0 :(得分:-3)

正确的代码拳头:

int initfunc(int *array, int len)
{
    int i;
    for(i = 1; i <= len; i++)
    {
        array[i] = i;
        *array++; // this is needed to point to the next position in the array
    }
    return 0;
}

int main(int argc, char* argv[])
{
    int myarray[10];
    /*
    this is an array, int *array is a pointer to int
    but not an actual array
    */

    initfunc(myarray,10);

    return 0;
}

你的代码的问题是你传递一个指向什么的指针, (NUL指针)用语句声明:int * array = 0

将其传递给存储十个值的函数 这是灾难的秘诀,因为它指向存储 那是没有先分配的。

我希望这会有所帮助。