C++ 指针返回值
在这段代码中,我要求用户输入他的姓名、工作小时数和每小时工资,然后将两者相乘得到他的工资。我是通过一个指针函数来实现的,但是由于某种原因,当程序转到calculate_salary函数时,它以一个错误结束。什么是错误的,为什么会发生这种情况C++ 指针返回值,c++,C++,在这段代码中,我要求用户输入他的姓名、工作小时数和每小时工资,然后将两者相乘得到他的工资。我是通过一个指针函数来实现的,但是由于某种原因,当程序转到calculate_salary函数时,它以一个错误结束。什么是错误的,为什么会发生这种情况 #include <iostream> #include <string> using namespace std; class Employee { public: string name;
#include <iostream>
#include <string>
using namespace std;
class Employee
{
public:
string name;
double salary;
double hours;
double cash_per_hour;
int age;
Employee(){}
double* salary_calculator(double *h, double *c_p_h)
{
double *p;
*p = (*h) * (*c_p_h);
cout << "here" << endl;
return(p);
}
void display()
{
cout << endl << endl << "*********************" << endl
<< "The salary is " << salary << endl
<< "*********************" << endl;
}
void get_salary()
{
double *s;
s = salary_calculator(&hours, &cash_per_hour);
salary = *s;
}
void get_details()
{
cout << "********************************" << endl;
cout << "WELCOME TO THE SALARY CALCULATOR" << endl;
cout << "Please enter your name " << endl;
cin >> name;
cout << "Please enter the number of hours worked" << endl;
cin >> hours;
cout << "Please enter the rate per hour" << endl;
cin >> cash_per_hour;
cout << "***************END****************" << endl;
}
};
int main()
{
Employee one;
one.get_details();
one.get_salary();
one.display();
return 0;
}
#包括
#包括
使用名称空间std;
班级员工
{
公众:
字符串名;
双薪;
双倍小时;
每小时双倍现金;
智力年龄;
雇员(){}
双倍*工资计算器(双倍*h,双倍*c\u p\h)
{
双*p;
*p=(*h)*(*c_p_h);
cout工资计算器中的指针p
与任何分配的空间都不关联。因此,取消引用它会导致未定义的行为
不要在这里使用指针,只需将返回类型更改为double
,并根据该类型调整程序。正如我在注释中所述:函数返回指向变量p
的指针。但是p
超出范围(即,仅存在于函数本身中)因此,返回的指针指向某个东西,而我们不知道指向什么,也称为野生指针
为了避免这种情况,您应该只按值返回,因为这是一种基本类型。如果确实要返回指针,则必须分配内存。对于对象,可以使用函数new分配内存。例如:double*p=new double;
请记住,当您不再需要此分配的内存时,您必须释放它,否则将导致内存泄漏。请阅读此处的详细信息:我希望您尝试缩进代码。您会遇到什么错误?在使用“获取详细信息”功能后,程序将停止工作为什么在可以使用引用的情况下使用指针?该功能n salry_calculator返回指向双精度的指针。但是,变量p超出范围。此外,您使用了不必要的指针,如函数get_salary中的指针。我对另一个程序使用了相同的方法,并且成功了。可以通过此方法返回指针,但只有这一次我得到了一个错误指针值could指向您程序中的有效位置,但很可能不是。在您的其他程序中,您运气不错。@madridista“似乎工作”可能是未定义行为的症状