Так что я пытался выполнить это задание в течение нескольких часов, и я не могу понять это, я на 99% уверен, что это связано с тем, как я использовал указатели. И ошибка, которую я получаю, - это разрыв 0xC0000005: местоположение записи нарушения доступа 0xCCCCCCCC.which, я думаю, что некоторые из моих указателей равны нулю. Извините за любительские коды заранее ..Я не думаю, что правильно использую указатели. C
#include<stdio.h>
void load(int *salary)
{
printf("Please enter your salary: ");
scanf("%d", *salary);
}
void calc(int *salary, float *rate, int *raise, int *newsalary)
{
rateofsalary(&salary);
*raise = *salary/(*rate);
*newsalary = *raise+*salary;
}
float rateofsalary(int *salary)
{
float rate;
if(*salary<0 && *salary>=30000)
rate = 7.0;
else
if(*salary<30000 && *salary>=40000)
rate = 5.5;
else
if(*salary<40000)
rate = 4.0;
return rate;
}
void print(int *salary, float *rate, int *raise, int *newsalary)
{
printf("| | Salary | Rate % | Raise | New Salary |\n");
printf("| | %d | %0.2f | %d | %d |\n", salary, rate, raise, newsalary);
}
void main()
{
int salary, raise, newsalary;
float rate;
load(&salary);
rateofsalary(&salary);
calc(&salary, &rate, &raise, &newsalary);
print(&salary, &rate, &raise, &newsalary);
}
'rateofsalary (& зарплата);' зарплата уже 'ИНТ *', нет необходимости, чтобы получить свою ссылку –
'rateofsalary (& зарплаты);' должен быть 'ставка = rateofsalary (& зарплата);' –