2013-01-10 31 views
0

下午好,是否可以终止C++结构体的二维数组?谢谢。是否有可能终止C++结构的2维数组?

sPRIORITYANALYZER sArrayOfArrayAnalyzerArray[3][3] = { 
{ 
    {mdMUReadWrite::First,mdProfiler::DataTypeFirstName}, 
    {mdMUReadWrite::FullName,mdProfiler::DataTypeFullName}, 
    {mdMUReadWrite::InverseName,mdProfiler::DataTypeInverseName} 
}, 

{ 
    {mdMUReadWrite::Last,mdProfiler::DataTypeFirstName}, 
    {mdMUReadWrite::FullName,mdProfiler::DataTypeFullName}, 
    {mdMUReadWrite::InverseName,mdProfiler::DataTypeInverseName} 
}, 

{ 
    {mdMUReadWrite::Zip9,mdProfiler::DataTypeZipOrPostalCode}, 
    {mdMUReadWrite::Zip5,mdProfiler::DataTypeZipOrPostalCode}, 
    {mdMUReadWrite::CityStZip,mdProfiler::DataTypeCityStateZip} 

} 
}; 
+2

你是什么意思由null终止? –

+0

Luchian Grigore,NULL终止意味着你可以用嵌套的for循环遍历2维数组的内容。谢谢。 – Frank

+0

@Frank为什么你不能迭代使用数组的实际大小,而不是寻找已经初始化为这个* null *值的结构? – Praetorian

回答

2

空终止仅在有指针数组时才有意义。你必须把一个完整的空行有:

{ { 0, 0 }, { 0, 0 }, { 0, 0 } } 

幸运的是,C和C++让你得逞,只是一个单一的初始化,所以只是{ { 0 } }应该工作。您还需要使阵列大小为[4][3]

+0

+1只要零不是这些结构字段的有效值,就会工作。 – Praetorian

+0

是的 - 这是我根据他的“无效”终止要求所做的假设。 –

+0

@Carl Norum,我刚刚尝试{0,0,0},并得到编译器错误\t错误C2078:太多初始值设定项。谢谢 – Frank

0

晚上好,下面的代码是正确的建议答案,并在Microsoft Visual Studio 9.0 C++编译器上编译。谢谢。

sPRIORITYANALYZER sArrayOfArrayAnalyzerArray [] [4] = {

{ 
    {mdMUReadWrite::First,mdProfiler::DataTypeFirstName}, 
    {mdMUReadWrite::FullName,mdProfiler::DataTypeFullName}, 
    {mdMUReadWrite::InverseName,mdProfiler::DataTypeInverseName}, 
    (mdMUReadWrite::MatchcodeMapping)0 
}, 

{ 
    {mdMUReadWrite::Last,mdProfiler::DataTypeFirstName}, 
    {mdMUReadWrite::FullName,mdProfiler::DataTypeFullName}, 
    {mdMUReadWrite::InverseName,mdProfiler::DataTypeInverseName}, 
    (mdMUReadWrite::MatchcodeMapping)0 
}, 

{ 
    {mdMUReadWrite::Zip9,mdProfiler::DataTypeZipOrPostalCode}, 
    {mdMUReadWrite::Zip5,mdProfiler::DataTypeZipOrPostalCode}, 
    {mdMUReadWrite::CityStZip,mdProfiler::DataTypeCityStateZip}, 
    (mdMUReadWrite::MatchcodeMapping)0 

}, 

{ { (mdMUReadWrite::MatchcodeMapping)0, (mdProfiler::ProfilerDataType)0 }, { (mdMUReadWrite::MatchcodeMapping)0, (mdProfiler::ProfilerDataType)0 }, {(mdMUReadWrite::MatchcodeMapping) 0, (mdProfiler::ProfilerDataType)0 } } 

};

+0

@Carl Norum,请让我知道你对我提出的答案的看法。谢谢, – Frank