Zweidimensionales statisches Array als Funktionsparameter



  • Hallo zusammen.

    Ich hab eine Zweidimensionales statisches Array, welches ich einer Funktion übergeben möchte. Ich habe verschiedene Wege probiert, aber ohne Erfolg.

    Ich verstehe nicht warum folgende Lösung nicht funktioniert:

    typedef TCHAR TEXT_ARRAY[24][44];
    void MyFunction(TEXT_ARRAY aText);
    
    TEXT_ARRAY gaText;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	MyFunction(gaText);
    	return 0;
    }
    
    void MyFunction(TEXT_ARRAY aText)
    {
    	TEXT_ARRAY laText;
    }
    

    Wenn ich einen Breakpoint in MyFunction setze sehe ich Folgendes:

    + aText 0x00417140 wchar_t (* gaText)[44] wchar_t [44]*
    + gaText 0x00417140 wchar_t (* gaText)[44] wchar_t [24][44]
    + laText 0x0012f64c wchar_t [24][44]

    So wie ich das verstehe, sind sowohl das globale Array gaText als auch das lokale Array laText zweidimensional. Wieso das 'ÜbergabeArray' aText nicht?

    Vielen Dank im Voraus.


  • Mod

    Weil, wie bei jeder Übergabe eines Arrays, nicht ein Array übergeben wird sondern ein Zeiger auf das erste Element. Übrigens ist entgegen verbreiteter Anfängermeinung das erste Element eines TEXT_ARRAY[24][44] vom Typ TEXT_ARRAY[44] und nicht vom Typ TEXT_ARRAY



  • Benutze lieber boost::multi_array.


Anmelden zum Antworten