Werteinitialisierung Array vs. Dynamische Speicher Array

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
PietCN
Beiträge: 13
Registriert: Sa Jan 16, 2016 10:49 pm

Werteinitialisierung Array vs. Dynamische Speicher Array

Beitrag von PietCN » Fr Jan 22, 2016 11:53 pm

Hallo zusammen zur späten Stund,
ich bin auf folgendes Problem gestoßen:

Und zwar, wen ich ein normales Array mit 0 ( int Nullen) initialisieren möchte:

Code: Alles auswählen

int Array[10] = {0};
,werden alle Arrayelemente mit einer int 0 gefüllt.

Nun wollte ich ein dynamisches Array erstellen:

Code: Alles auswählen

int DynArray = new int[10];
Zugegebener Weise fällt mir der Unterschied jetzt bei der Fragestellung auf :D. Aber weiter: Gibt es eine "Kurzform dieses Dynamische Array mit Nullen zu initialisieren oder muss man zwangsweise per Schleife alle Elemente einmal die Null verpassen?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Werteinitialisierung Array vs. Dynamische Speicher Array

Beitrag von Xin » Sa Jan 23, 2016 11:17 am

PietCN hat geschrieben:Zugegebener Weise fällt mir der Unterschied jetzt bei der Fragestellung auf :D. Aber weiter: Gibt es eine "Kurzform dieses Dynamische Array mit Nullen zu initialisieren oder muss man zwangsweise per Schleife alle Elemente einmal die Null verpassen?
Naja, das DynArray ist ja kein int, sondern der Zeiger auf das erste Element.

Deine Zuweisung bedeutet also, dass Du einen Zeiger bearbeitest, während Du gleichzeitig die int-Zuweisungen machen möchtest.
Hier wäre eine Schleife erforderlich.
In C++ könnte man sowas natürlich in einer eigenen Klasse kapseln. Und erstaunlicherweise hatten andere wohl das gleiche Problem:

Code: Alles auswählen

#include <array>

int main()
{
  std::array< int, 10 > * dynArray = new std::array< int, 10 >;
  dynArray->fill( 0 );

  delete dynArray;
}
oder noch mehr modernes C++:

Code: Alles auswählen

#include <array>
#include <memory>

int main()
{
  std::shared_ptr< std::array< int, 10 > > dynArray( new std::array< int, 10 > );
  
  dynArray->fill( 0 );
}
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten