Dimensionen per Variable setzen



  • Hi

    Ich habe 2 Fragen.

    1. Warum ist es nicht möglich, dass man die Dimensionen einer Variable, per
      Variable festlegt?

    2. Wie kann man dies realisieren?

    main()
    {
    int dimensionen=10;
    bool wort[dimensionen];
    
    }
    

    mfg raz1



  • /Edit: Müll



  • Weil der Compiler wissen muss wieviel Speicher er für das Feld reservieren muss. Wenn du es dynamisch machen willst musst du Speicher auf dem Heap holen über einen Pointer oder du nimmst die STL.



  • zum Beispiel:

    main()
    {
      int dimensionen=10;
      bool *pWort = new bool[dimensionen];
      ...
      delete[] pWort;
    }
    


  • Thx für die schnelle Antwort.

    Jetzt klappt alles tadellos.

    mfg raz1



  • Jetzt habe ich doch noch ne Frage.

    Soweit ich verstanden habe funktoniert es folgendermaßen.

    ...
    
    bool *wort; // hier wird ein Speicherbereich mit dem Namen wort reserviert;
    int dim=10; // Variable dim wird auf 10 gesetzt
    wort = new bool[dim]; // in den Speicherbereich wird die Variable "wort" vom Typ
                          // bool mit 10 Dimensionen gepackt.
    
    ...
    

    Jetzt kann ich die variable "wort" wie gewohnt verwalten.
    Nun ist meine Frage wie kriege ich einen Zeiger auf die Variable?

    Bsp:

    char *wort;
    wort="blabla";
    
    // wie würde dass mit dem new Oprator aussehen?
    
    int dims=10;
    char *wort;
    wort= new char[dims];
    // jetzt habe ich die Varibale "wort" in 10 Dimensionen, aber wie kriege ich den  Zeiger dadrauf?
    


  • raz1 schrieb:

    Jetzt habe ich doch noch ne Frage.

    Soweit ich verstanden habe funktoniert es folgendermaßen.

    ...
    
    bool *wort; // hier wird ein Speicherbereich mit dem Namen wort reserviert;
    int dim=10; // Variable dim wird auf 10 gesetzt
    wort = new bool[dim]; // in den Speicherbereich wird die Variable "wort" vom Typ
                          // bool mit 10 Dimensionen gepackt.
    
    ...
    

    Nope.

    ...
    
    bool *wort; // hier wird ein Zeiger wort auf den Typ bool definiert. Mehr nicht.
    int dim=10; // Variable dim wird auf 10 gesetzt
    wort = new bool[dim]; // hier wird Speicher für 10*sizeof(bool) reserviert und die Startadresse dieses Speichers an den Zeiger wort übergeben.
    
    ...
    
    delete[] wort; // Speicher wieder freigeben. Nicht vergesssen, da sonst Speicherleck!
    

    Den Rest verstehe ich nicht 😕 Wort ist doch bereits ein Zeiger?

    Caipi



  • Muh was du da machst ist böse! Diese String-Literals (das was im Quelltext in doppelten Anfügrunsstrichen steht) sind _immer_ kostant.

    // Unser String
    char const* string = "Hallo Welt";
    
    int x = strlen(string); // Länge des Strings
    char *wort = new char[x + 1]; // Speicher reservieren (+1 weil wir noch die abschließende Null brauchen)
    
    strcpy(wort, string); // kopieren
    


  • raz1 schrieb:

    Nun ist meine Frage wie kriege ich einen Zeiger auf die Variable?

    Indem man den Adress Operator benutzt.


Anmelden zum Antworten