有没有办法重置函数中声明为静态的变量?目标是确保不会使用来自不相关调用的延迟值调用该函数。例如,我有一个对矩阵列进行操作的函数。
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
}
该函数被调用 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
}