我正在尝试编写一个程序来跟踪员工工资单,并且我似乎可以通过引用正确传递参数。执行程序时,由于自动出现断点,我无法越过用户输入函数。
#include <stdio.h>
#define size 5
void userinput(int *hoursworked[size], float *rate[size], char *name[size]);
float calculatepay(float *rate[size], int *hoursworked[size]);
float tax(float *grosspay[size]);
float totalpay(float *grosspay[size]);
void print(char *name[size][20], float *rate[size], int *hoursworked[size], float *grosspay[size], float sum[size], float taxespaid[size]);
int main()
{
int hoursworked[size];
float rate[size];
char name[size];
float grosspay[size];
float taxespaid[size];
float sum[size];
userinput(&hoursworked[size], &rate[size], &name[size]);
calculatepay(&rate[size], &hoursworked[size]);
tax(&grosspay[size]);
totalpay(&grosspay[size]);
print(&name[size], &rate[size], &hoursworked[size], &grosspay[size], &sum[size], &taxespaid[size]);
return 0;
}
void userinput(int *hoursworked[size], float *rate[size], char *name[size])
{
for(int i=0; i<size; i++){
printf("Enter name: ");
scanf("%s", name[i] , 20);
printf("Enter hours worked: ");
scanf("%d", hoursworked[i]);
printf("Enter hourly rate: ");
scanf("%f", rate[i]);
}
}
float calculatepay(float *rate[size], int *hoursworked[size])
{
float grosspay[size];
for(int i=0; i<size; i++){
grosspay[size] = *rate[size] * *hoursworked[size];
}
return grosspay[size];
}
float tax(float *grosspay[size])
{
float taxespaid[size];
for(int i=0; i<size; i++){
taxespaid[size] = *grosspay[size]*0.2;
}
return taxespaid[size];
}
float totalpay(float *grosspay[size])
{
float sum;
int i;
for (i=0; i<size; i++) {
sum = sum + *grosspay[i];
}
return(sum);
}
void print(char *name[size][20], float *rate[size], int *hoursworked[size], float *grosspay[size], float sum[size], float taxespaid[size])
{
for(int i=0; i<size; i++){
printf("Pay to: %s", name[i][20]);
printf("Hours worked: %d", hoursworked[i]);
printf("Hourly rate: %f", rate[i]);
printf("Gross Pay: %f", grosspay[i]);
printf("Taxes paid: %f", taxespaid[i]);
printf("Net pay: %f", *grosspay[i] - taxespaid[i]);
printf("Total paid to all employees: %f", sum[i]);
}
}
最佳答案
看来您不理解指针概念。当您将数组传递给函数时,只需传递变量即可。它指向数组的地址。所以
userinput(variableName);
函数定义应该是,
(Void)userinput( int variableName[size])
{
//code here
}
关于c - 我不断收到“第一个函数中的线程 1 EXC_BAD_ACCESS 断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31497117/