Sue*_*Sue 7 c static initialization reset
有没有办法重置函数中声明为static的变量?目标是确保不使用来自不相关调用的延迟值调用该函数.例如,我在矩阵的列上有一个函数opearting.
int foo(matrix *A, int colnum, int rownum){
static int whichColumn;
static int *v; //vector of length A->nrows
if (column != whichColumn){
memset(v,0,size);
whichColumn = which;
}
//do other things
}
Run Code Online (Sandbox Code Playgroud)
该函数被调用n次,每列一次.这是"重新设置"静态变量的正确方法吗?是否有其他一般的万无一失的重置静态变量的方法?例如,我想确保如果使用可能具有不同维度的新矩阵进行调用,则向量v被调整大小并归零等.似乎最简单的方法是使用NULL指针调用该函数:
int foo(matrix *A, int colnum, int rownum){
static int whichColumn;
static int *v; //vector of length A->nrows
if (A == NULL){
FREE(v);
whichColumn = 0;
}
//do other things
}
Run Code Online (Sandbox Code Playgroud)