2017-08-21 77 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

谢谢,我能够做到我想要使用上述解决方案。有效。 –

相关问题