2017-08-21 29 views
-2

我想和名稱聲明32個1D陣列efficiency_module_cmp_%D_X,%d變爲從1到16和efficiency_module_cmp_%d_y,%d爲1〜16 我使用以下代碼來執行此推移但這是行不通的。這有什麼問題:如何在for循環中聲明多個具有相似名稱的數組?

char array_name[100]; 
char array_name1[100]; 


for (int i=0; i<16;i++) 
{ 

    sprintf(array_name,"efficiency_module_cmp_%d_x",i+1); 
    float array_name[n] ; 
    sprintf(array_name1,"efficiency_module_cmp_%d_y",i+1); 
    float array_name1[n] ; 

} 

建議一個可能的解決方案。

+3

在C或C++中,不能在運行時創建類型或對象的名稱。你爲什麼認爲你需要這樣做? –

+0

他可以在宏 –

+2

@Flip不在運行時。 –

回答

1

您不能在運行時創建對象的名稱(C++是靜態類型的)。相反,你可以讓數組的載體(或任何其他容器),並且把你的陣列到容器的像這樣的背:

#include <vector> 
int main() 
{ 
    std::vector<char*> vectorOfArrays; 
    for (int i = 0; i < 16; i++) { 
     vectorOfArrays.push_back(new char[10]); 
    } 
    return 0; 
} 

然後你就可以訪問你這樣的陣列中的一個:vectorOfArrays[3];

+0

謝謝,我能夠做到我想要使用上述解決方案。有效。 –

相關問題