我知道在C++函數中用'static'修飾符聲明的變量只被初始化一次,我想要做的就是用適當的內容初始化靜態動態分配的數組。這裏是我的代碼片段:如何在C++中靜態初始化靜態動態分配的數組?
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 ;
...
}
,但它可能不是編碼的最佳方式,更有效,可以以某種方式完成。我可以通過某種方式使用「靜態」moddifier來實現更優化的實現嗎?
您可以將數組放入類中,在構造函數中初始化它,然後使用該類的'static'實例。 – juanchopanza
與您提供的內容並不完全不同,但也要使標記爲靜態(所以您沒有該全局變量)。但爲什麼你不使用課堂? – clcto
我想要一個相當優化的代碼來編譯給定字符和給定長度的密碼generetor。我認爲代碼會很簡單,沒有類的使用 – user1978386