我知道在 C++ 函数中用 'static' 修饰符声明的变量只初始化一次,我想要做的是用适当的内容初始化静态动态分配的数组。这是我的代码片段:
inline char* getNextPass()
{
static int chars_num = chars_data.charset_len, pass_len = chars_data.pass_len ;
static int *cur_pos = new int[pass_len] ; // this is static variable in function, what means it's initialized only once
...
for(int aa = 0; aa < pass_len; aa++) // this is executed every time the function is called. How can I make this code execute only once ?
cur_pos[aa] = 0 ;
...
}
我当然知道我可以做这样的事情:
...
flag = true ;
...
inline char* getNextPass()
{
...
if(flag)
for(int aa = 0; aa < pass_len; aa++)
cur_pos[aa] = 0 ;
flag = false ;
...
}
但这可能不是最佳的编码方式,并且可以以某种方式更有效地完成。我可以使用“静态”修饰符以某种方式进行更优化的实现吗?