C++动态分配内存返回数组



我在返回动态分配的两个数组时遇到问题。我有一个外部文件正在读取数组的大小。(在我的情况下是20),当我使用动态分配的数组时,这就决定了数组的大小。

此外,一旦我返回它们,我当前的语法是否正确,或者是否有什么需要更改的地方。

这是我的代码

int main (void)
{
    int size;
    int notFound = 0;
    int accountNumber = 0;
    int results;
    int * accountPtr = nullptr;
    double * balancePtr = nullptr;

    size = readFile(notFound, accountPtr, balancePtr);

    if (notFound == 0)
    {
     selectionSort(accountPtr, balancePtr, size);
        while  (accountNumber != -99)
            {
                cout << "Please Enter an Account Number (Type -99 to quit): ";
                cin >> accountNumber;
                if (accountNumber == -99)
                {
                    cout << "Goodbye!" << endl;
                }
                else
                {
                    results = binarySearch(accountPtr,accountNumber,size);
                    if ( results == -1)
                    {
                        cout << "That Account Number Does Not Exist." << endl;
                    }
                    else
                    {
                        cout << "nAccount Number" << "tt" << "Account Balance" << endl;
                        cout << "-----------------------------------------------" << endl;
                        cout << fixed << setprecision(2) << accountPtr[results] << "ttt" << balancePtr[results] << endl << endl;
                    }
                }

            }
    }
    return 0;
}
int readFile (int &notFound, int  *accountPtr, double  *balancePtr)
{
    int size;
    ifstream inputFile;
    inputFile.open("account.txt");
    if (inputFile.fail())
    {
     cout << "The File Account.TXT was not found." << endl;
     notFound = 1;
    }
    else
    {
        inputFile >> size;
        unique_ptr<int[]> accountPtr(new int[size]);
        unique_ptr<double[]> balancePtr(new double[size]);

        for(int i = 0; i < size; i++)
        {
            inputFile >> accountPtr[i] >> balancePtr[i];
        }
    }
    return size;
}

您正在按值传递指针。调用代码中的指针变量将不会被修改。除了传递值之外,在函数中,您还声明了与形式参数同名的局部变量。

相反,您应该返回或通过引用std::vector传递。

最新更新