• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

C++ Array Initialisierung

J

Jonny83

Gast
Ich hab mal ein wenig mit C++ rumprobiert und hätte da mal ne' Frage: ich will in einem Programm ein zwei Dimensionales char-Array initialisieren. einer der beiden Werte steht von vornherein fest, der andere soll eingegeben werden:

#include <iostream>

using namespace std;

int main() {
int x;
cout << "wert: ";
cin >> x;
char test [x][5];
}

Problem ist: der Compiler will einen Konstanten Ausdruck für die Array-Größe.

Wie kann ich das lösen?
 
Jonny83 am 26.05.2005 12:52 schrieb:
blub..
Problem ist: der Compiler will einen Konstanten Ausdruck für die Array-Größe.

Wie kann ich das lösen?

Das Problem kannst du lösen indem du für das neue Array dynamisch zur Laufzeit den Speicher beanspruchst. Das macht man mit dem New Befehl.

Also z.B.

int *bla = new int;

Damit wird jetzt eben ein neuer Integer im Speicher erzeugt, auf den dein Pointer (*bla) zeigt. Mit folgendem Code kann man dann ein 2D Array dynamisch erzeugen:

int ** Array;
// HIER DEINE EINGABEAUFFORDERUNG FÜR DEN WERT
Array = new int *[WERT]; //WERT ist hier deine alte int x Variable
for (int i = 0; i <= WERT; i++)
Array[ i ] = new int[5];

Sollte so in etwa funktionieren.. hab jetzt nicht mehr nachgeschaut und das noch irgendwie so hingepfriemelt :-D
Ich hoffe mal das hilft dir etwas weiter
 
Hallo,

Das ist nicht ganz korrekt, da hiermit ein int-Array und kein char-Array angelegt wird. Außerdem geht es noch viel einfacher:

// HIER DEINE EINGABEAUFFORDERUNG FÜR DEN WERT

// Array dynamisch anlegen
char* pcArray = calloc(5 * x, sizeof(char) );

// Zugriff erfolgt dann z.B. durch
char cChar = *( pcArray[2][3] );

// Am Ende muss der Speicherbereich freigegeben werden
free(pcArray);

Das ganze sollte so funktionieren.

Viel Erfolg

Rico
 
rsalfer am 27.05.2005 09:51 schrieb:
Das ist nicht ganz korrekt, da hiermit ein int-Array und kein char-Array angelegt wird.
Stimmt, das hab ich überlesen .. :P

Außerdem geht es noch viel einfacher:

Naja, ich find meins schöner, aber jedem das seine.. Ich probier deine Version auch mal aus, vielleicht kommt ich noch auf den Geschmack.
 
Zurück