Du bist schon ganz gut in der richtigen Richtung unterwegs.
Ein multidimensional array in C++ ist eigentlich eine Liste von Pointer. D.h. list[0] z.B. liefert einen Pointer zurück, und auf diesem wird mit list[0][1] z.B. auf das 2. Element des Pointer zugegriffen.
Deshalb kann man wie in Variante 1 das mit einer Schleife initialisieren.
Variante 1
Code:
char * list;
list = new char[menulen * captlen]
Alternativ kann man auch einen außreichend großen Block Speicher allokieren.
Variante 2
Code:
char ** list;
list = new char*[menulen];
for(int i = 0; i < captlen; i++)
{
list[i] = new char[captlen];
}
//Zugriff auf stelle x, y
char val = list[x * captlen + y)
Nachzulesen gibt es das z.B. hier: https://stackoverflow.com/questions/...in-c-using-new
Ein Tipp außerdem: Solltest du das auf einem Mikrocontroller machen wollen solltest du auf new verzichten. Am PC würde ich auch auf die Arrays verzichten und stattdessen einen std::vector<std::vector<char>> list verwenden. Dann muss man nämlich den Speicher nicht von Hand aufräumen und hat dynamische Größen geschenkt bekommen.
Lesezeichen