在函数中使用指针

Using Pointers in functions

本文关键字:指针 函数      更新时间:2023-10-16

我正试图在函数中使用指针,然后从主体调用该函数。当我尝试调用它时,我会得到这两个错误;"未定义对字符串输出的引用,这是由我调用stringOutput();函数的行引起的,另一个错误是"Id返回1退出状态。"我不确定为什么会出现这些错误

void stringOutput(int dayNumber, double *ptrTemperatures);
int main()
{
    int dayNumber;
    double fahrenheit = 0;
    double cTemperature = 0;
    const double MAXIMUM_TEMPERATURE = 60;// constants for mix/max
    const double MINIMUM_TEMPERATURE = -90 ;
    const int MAXIMUM_DAYS = 365;
    const int MINIMUM_DAYS = 1;
    double *ptrTemperatures = NULL;
    cout << "How many days would you like to enter? ";
    dayNumber = myValidation::GetValidInteger(MINIMUM_DAYS, MAXIMUM_DAYS);
    try
    {
        ptrTemperatures = new double[dayNumber];
    }
    catch(exception e)
    {
        cout << "Failed to allocate memory: " << e.what() << endl;
    }
    cout << "nnTEMPERATURE REPORTERn____________________________n Please Enter the temperature for each day.";
    for(int dayCount = 0; dayCount < dayNumber; dayCount++){
        cout << "Celsius Temperature for Day " << (dayCount + 1) << ": ";
        ptrTemperatures[dayCount] = myValidation::GetValidDouble(MINIMUM_TEMPERATURE, MAXIMUM_TEMPERATURE);
    }
    stringOutput();

    delete[] ptrTemperatures;
    return 0;
}//end main
    void stringOutput(int dayNumber, double *ptrTemperatures)
    {
        cout << "DAILY TEMPERATURE REPORTn__________________________________-nn";
        for(int dayCounter = 0; dayCounter < dayNumber; dayCounter++)
        {
            cout << "Day " << dayCounter << (dayCounter+1) << setw(10) << celsiusToFahrenheit(ptrTemperatures[dayCounter]) << (char(248)) << "F"
                << setw(10) << ptrTemperatures[dayCounter] << (char(248)) << "C" << endl;
        }
    }

猜测一下,您的代码大致如下:

void stringOutput();
int main() 
{
    …
    stringOutput();
}
void stringOutput(int dayNumber, double *ptrTemperatures)
{
    …
}

您的main函数使用了上面声明的stringOutput函数,但该函数从未在任何地方定义,因此出现了错误。

main下面,您声明并定义一个单独的stringOutput重载,它有两个参数,而不是没有。

如果你想使用main以下的函数,你需要在main:之前声明它

void stringOutput(int dayNumber, double *ptrTemperatures);
int main()
…

你还需要给它所需要的论据,而不是什么都不给:

int main()
{
    …
    stringOutput(dayNumber, ptrTemperatures);
}