是否可以使用指针将函数从函数调用到另一个函数

时间:2015-11-05 01:17:35

标签: c pointers time function-pointers

例如,如果我要使用多个函数进行复杂的计算,其中每个函数都执行一部分工作,例如可以进行以下操作:

void initialize_equations() {

    int t_constant;
    time_t times;
    double *current_time;
    times= time(NULL);

    t_constant = 365*24*60*60;


    *current_time =times/t_constant;

    printf("%Lf", current_time);
}

int year_day(time_t *crntT, int *constant) {

    int year, month;
    float year_l, month_l;

    year_l=(&current_time)/365; //trying to call crntT from previous function
    year=year_l+1970; //time starts at 1970 therefore turned it from float to int then summed time
    month=((year_l-year)*12)+1; // Month starts at Jan therefore +1

}

1 个答案:

答案 0 :(得分:0)

您无法访问在另一个函数中声明的局部变量,无论它是否为c中的指针。但是,只要您拥有此内存块的地址,您就可以(但可能不会)访问在另一个函数中分配的内存。

例如,如果您为本地变量'current_time'(您没有,但这是另一个问题)分配内存,请使用:

double* current_time = (double*) malloc(sizeof(double));

并保留已分配内存的地址(值为'current_time')。然后,只要你能以某种方式让该函数知道这个地址,你就可以在另一个函数中访问分配的内存。

话虽如此,为什么不简单地将此值保存在更高级别的位置,然后将其传递给需要此值的所有函数?