我调用的函数不执行函数语句但运行代码时没有错误显示

问题描述 投票:0回答:1

我正在编写一个程序来获取用户对雇主工资单的输入。 该程序运行良好,没有显示任何错误。由于某种原因,主函数可以调用另一个函数,但该函数的语句或主体未被执行(不要求用户输入)程序完成并退出。

这是一个帮助学习结构的学校项目。 所以对于第一部分,我创建了一个结构。 我正在使用一系列“员工”类型来帮助提高效率

#include <iostream>

using namespace std;


struct employee
{
    string first;
    char middle;
    string last;
    double hours;
    double rate;
};

employee input(employee [],int);
int const size= 2;
employee array[size];

程序没有错误,所以它正在调用输入函数 fine

int main()
{
   
    
    cout<<" \t Data Housing Corp. Weekly Payroll"<<endl;
    cout<<"===================================================="<<endl;
    
    employee input(employee[],int);
    return 0;
}

但我一定是在这里做错了什么,因为它跳过了函数的语句或主体并退出了程序。

employee input(employee array[],int size)
{
    cout<<"hello";
     for(int i=0; i<size;i++)
    {
        cout<<"For Employee #"<<i+1<<endl;
        cout<<"Enter first name"<<endl;
        cin>> array[i].first;
        cout<<"Enter middle initial"<<endl;
        cin>> array[i].middle;
        cout<<"Enter last name"<<endl;
        cin>> array[i].last;
        cout<<"Enter hours worked this week"<<endl;
        cin>> array[i].hours;
        cout<<"Enter rate of pay per hour"<<endl;
        cin>> array[i].rate;
    }
    return array[size];
}

我想让程序调用input函数,然后执行statement/body,这样用户就可以将名字、中间名首字母、姓氏等输入到数组中。 但是没有用户输入提示。或正在显示函数体内的任何内容。

c++ function callback
1个回答
0
投票

main()
里面,声明:

employee input(employee[],int);

是函数声明,不是函数调用。这就是为什么

input()
里面的代码没有运行的原因。

改为将该语句更改为:

input(array, size);

此外,在

input()
中,声明:

return array[size];

正在调用 Undefined Behavior,因为它正在访问数组边界之外的数组元素。当

input()
接收它直接修改的
employee
数组时,返回一个
employee
对象是没有意义的。

试试这个:

#include <iostream>
#include <string>
using namespace std;

struct employee
{
    string first;
    char middle;
    string last;
    double hours;
    double rate;
};

void input(employee[], int);

int const size = 2;
employee array[size];

int main()
{       
    cout << " \t Data Housing Corp. Weekly Payroll" << endl;
    cout << "====================================================" << endl;
    
    input(array, size);
    return 0;
}

void input(employee array[], int size)
{
    cout << "hello";
    for(int i = 0; i < size; ++i)
    {
        cout << "For Employee #" << i+1 << endl;
        cout << "Enter first name" << endl;
        cin >> array[i].first;
        cout << "Enter middle initial" << endl;
        cin >> array[i].middle;
        cout << "Enter last name" << endl;
        cin >> array[i].last;
        cout << "Enter hours worked this week" << endl;
        cin >> array[i].hours;
        cout << "Enter rate of pay per hour" << endl;
        cin >> array[i].rate;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.