c - 我不断收到“第一个函数中的线程 1 EXC_BAD_ACCESS 断点

标签 c xcode

我正在尝试编写一个程序来跟踪员工工资单,并且我似乎可以通过引用正确传递参数。执行程序时,由于自动出现断点,我无法越过用户输入函数。

#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/

相关文章:

复制字符数组

ios - iPhone 应用程序无法在模拟器中运行

iphone - becomeFirstResponder 第二次不显示键盘(ios 6 + Storyboard)

c - 地址加 `int`导致int加4次

c - 如何向 Linux 内核添加新的 Device 类

xcode - 自动调整“非视网膜”图像版本的大小

简单窗口中的 Objective-C 日历。如何?

c++ - 使用 Cmake,如何防止库源包含在我的 IDE 中?

c - 使用 Valgrind 检查后如何查找和删除我的 C 程序中的内存泄漏和错误

c++ - 在 C 或 C++ (mac OSX) 中拥有 KeyDown 事件