“新”如何在这个C ++函数中工作?

时间:2015-07-09 02:31:47

标签: c++ arrays pointers new-operator

int main()
{
    int e[]={3,5,1,2,-2,-1,7,8,0,9};
    int *f;
    int fsize;
   f=smaller_than(e,10,fsize,5);
}

我有一个功能:

int * smaller_than(const int list[],const int SIZE,int& count,const int THRESHOLD=0)
{
    count = 0;

    for (int i = 0; i < SIZE; i++)
    {
        if (list[i] < THRESHOLD)
        {
            count++;
        }
    }       
    int newArray[count];
    int *p = newArray;
    int j = 0;

    for (int i = 0; i < SIZE; i++)
    {
        if (list[i] < THRESHOLD)
        {
            newArray[j] = list[i];
            j++;
        }
    }
    return p;

使用单独的打印功能无法正确打印,它打印3 32767 229810164 1 -1 0,但是当我复制其他人所做的时:

    int * newArray = new int[count];
    int j = 0;

    for (int i = 0; i < SIZE; i++)
    {
        if (list[i] < THRESHOLD)
        {
            newArray[j] = list[i];
            j++;
        }
    }

    return newArray;
}

这适用于并打印3 1 2 -2 -1 0。我不明白,为什么我的工作不正常,使用“new”关键字有什么不同?

0 个答案:

没有答案