2013-01-10 3 views
0

안녕하세요, C++ 구조체의 2 차원 배열을 NULL로 끝낼 수 있습니까? 고맙습니다.C++ 구조체의 2 차원 배열을 NULL로 끝낼 수 있습니까?

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 0이 해당 구조 필드에 유효한 값이 아닌 한 작동합니다. – Praetorian

+0

Yup - 그건 내가 "null"종료에 대한 그의 요청을 기반으로하고 있다고 가정합니다. –

+0

@Carl Norum, 방금 {0, 0, 0} 시도하고 컴파일러 오류 \t 오류 C2078 : 너무 많은 이니셜 라이저가 있습니다. 감사합니다. – Frank

0

좋은 저녁, folllowing 코드는 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

관련 문제