<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Arrayanzahl per Eingabe erzeugen]]></title><description><![CDATA[<p>Hallo.<br />
Ich schreibe ein Konsolenprogramm, wo man eine Zahl eingeben soll und anhand der Eingabe erzeugt er ein Array:</p>
<p>Also</p>
<p>....bla bla Eingabe wieder gespeichert in iAnzahl</p>
<p>Und dann:<br />
int my_array[iAnzahl];</p>
<p>Doch beim Compilieren meckert.<br />
Er erwartet nen Konstanten Wert.<br />
Aber wie erzeuge ich nen Array anhand von ner Eingabe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/261540/arrayanzahl-per-eingabe-erzeugen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 05:33:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261540.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 Feb 2010 22:37:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Fri, 19 Feb 2010 22:37:30 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Ich schreibe ein Konsolenprogramm, wo man eine Zahl eingeben soll und anhand der Eingabe erzeugt er ein Array:</p>
<p>Also</p>
<p>....bla bla Eingabe wieder gespeichert in iAnzahl</p>
<p>Und dann:<br />
int my_array[iAnzahl];</p>
<p>Doch beim Compilieren meckert.<br />
Er erwartet nen Konstanten Wert.<br />
Aber wie erzeuge ich nen Array anhand von ner Eingabe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858441</guid><dc:creator><![CDATA[Kloas]]></dc:creator><pubDate>Fri, 19 Feb 2010 22:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Fri, 19 Feb 2010 22:49:42 GMT]]></title><description><![CDATA[<p>Mit dem Heap:</p>
<pre><code class="language-cpp">std::size_t n;
std::cin &gt;&gt; n;
int* array = new int[n]; // Speicher zur Laufzeit anfordern
array[0] = 23;
array[1] = 11;
delete [] array; // löschen
</code></pre>
<p>Bitte ein Buch benutzen und untensiv durcharbeiten, das Thema ist sehr wichtig (bzw. verlagere es nach hinten, falls du noch nicht so weit bist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858447</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Fri, 19 Feb 2010 22:49:42 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Fri, 19 Feb 2010 23:48:15 GMT]]></title><description><![CDATA[<p>Ad aCTa schrieb:</p>
<blockquote>
<p>Mit dem Heap:</p>
<pre><code class="language-cpp">std::size_t n;
std::cin &gt;&gt; n;
int* array = new int[n]; // Speicher zur Laufzeit anfordern
array[0] = 23;
array[1] = 11;
delete [] array; // löschen
</code></pre>
<p>Bitte ein Buch benutzen und untensiv durcharbeiten, das Thema ist sehr wichtig (bzw. verlagere es nach hinten, falls du noch nicht so weit bist).</p>
</blockquote>
<p>Ok danke.<br />
Aber wenn ich es lösche, dann sind meine Werte weg, richtig?<br />
Muss ich denn - wenn ich z.B. mit den Werten weiterarbeiten möchte - sie nochmal extra in eine Variabel speichern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858464</guid><dc:creator><![CDATA[Kloas]]></dc:creator><pubDate>Fri, 19 Feb 2010 23:48:15 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Fri, 19 Feb 2010 23:53:30 GMT]]></title><description><![CDATA[<p>Oder das delete erst ausführen, wenn du die Werte nicht mehr brauchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858465</guid><dc:creator><![CDATA[wx++]]></dc:creator><pubDate>Fri, 19 Feb 2010 23:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Sat, 20 Feb 2010 01:09:34 GMT]]></title><description><![CDATA[<p>Hi,..</p>
<p>Du kannst auch malloc benützen!</p>
<p>(nicht getestet:)</p>
<pre><code class="language-cpp">typedef struct _mem_float{
private:
float *_ptr;
size_t _size;
public:
_mem_float() {_ptr=0;};
_mem_float(int i) {size=i*sizeof(float); _ptr=(float*)malloc(size); };
~_mem_float(){ free(_ptr);};
_mem_float &amp;operator=(const _mem_float&amp;__cpy)
{
  if(this==&amp;__cpy) return *this;
  if(_ptr) free(_ptr);
  size=__cpy.size;
  _ptr=(float*)malloc(size);
  memcpy((void*)_ptr,(void*)__cpy._ptr,size);
 return *this;
}
float &amp;operator[](const int &amp;i){ return (*(_ptr+i*sizeof(float)));};
}MEMFLOAT;
</code></pre>
<p>malloc alloziert den benötigten speicher, der operator [] gibt dir die referenz auf das float an position i, welches du dann beschreiben und lesen kannst.</p>
<p>new benutze ich meist nur, wenn ich ein object im Speicher erstellen will, bei dem der ctor gleich mit aufgerufen wird, ansonsten versuche ich immer auf ein alloc (winapi Global/Local/HeapAlloc) auszuweichen.</p>
<p>grüüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858478</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Sat, 20 Feb 2010 01:09:34 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Sat, 20 Feb 2010 01:22:49 GMT]]></title><description><![CDATA[<p>angenommen ich vergesse das array zu deleten, wird der speicher denn automatisch bei programmende gelöscht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858480</guid><dc:creator><![CDATA[Kloas]]></dc:creator><pubDate>Sat, 20 Feb 2010 01:22:49 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Sat, 20 Feb 2010 01:36:28 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int* array = new int[iAnzahl]; // Speicher zur Laufzeit anfordern

	int i;
	for (i=1; i!=iAnzahl+1; i++){
		int iwert;
		cout &lt;&lt; &quot;Wert von R&quot;&lt;&lt;i&lt;&lt;&quot; (Wenn nicht bekannt, 0 eintragen): &quot;;
		cin &gt;&gt; iwert;
		array[iAnzahl] = i;

	}

	cout &lt;&lt; &quot;Delete.....&quot; &lt;&lt; endl;	
	delete [] array; // löschen
</code></pre>
<p>Die Schleife klappt einwandfrei.<br />
Aber sobald er ins Delete geht, kommt ne Error-Meldung:</p>
<p>Heap Corruption detected: after normal block #178 at 0x004....</p>
<p>CRT detectet that the application wrote to memor after end of heap buffer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858482</guid><dc:creator><![CDATA[Kloas]]></dc:creator><pubDate>Sat, 20 Feb 2010 01:36:28 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Sat, 20 Feb 2010 01:53:59 GMT]]></title><description><![CDATA[<p>zeusosc schrieb:</p>
<blockquote>
<p>new benutze ich meist nur, wenn ich ein object im Speicher erstellen will, bei dem der ctor gleich mit aufgerufen wird, ansonsten versuche ich immer auf ein alloc (winapi Global/Local/HeapAlloc) auszuweichen.</p>
</blockquote>
<p>Die Funktion, die den rohen Speicher besorgt, den new verwendet, versteckt sich hier:</p>
<pre><code class="language-cpp">_mem_float(int i) {size=i*sizeof(float); _ptr=(float*)operator new(size); };
</code></pre>
<p>Vielleicht könnte die auch Dein Freund werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858483</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 20 Feb 2010 01:53:59 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Sat, 20 Feb 2010 01:38:38 GMT]]></title><description><![CDATA[<p>von 0 bis Anzahl-1 sind es Anzahl Elemente.</p>
<pre><code class="language-cpp">for (i=1; i!=iAnzahl; i++){
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1858484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858484</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 20 Feb 2010 01:38:38 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Sat, 20 Feb 2010 02:09:05 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>zeusosc schrieb:</p>
<blockquote>
<p>new benutze ich meist nur, wenn ich ein object im Speicher erstellen will, bei dem der ctor gleich<br />
mit aufgerufen wird, ansonsten versuche ich immer auf ein alloc (winapi Global/Local/HeapAlloc) auszuweichen.</p>
</blockquote>
<p>Warum? new sollte gelegentlich schneller sein.</p>
<p>Die Funktion, die den rohen Speicher besorgt, den new verwendet, versteckt sich hier:</p>
<pre><code class="language-cpp">_mem_float(int i) {size=i*sizeof(float); _ptr=(float*)operator new(size); };
</code></pre>
</blockquote>
<p>Um die Geschwindigkeit, welche sich nur durch den zusätzlichen call ctor's von<br />
malloc unterscheidet, geht es mir nicht. Bei meinen anfängen des copy ctor<br />
proggen habe ich zahlreiche run-time excepions mit new /delete mitgenommen,<br />
vlt. auch durch meine dusseligkeit, dass ich mir die nutzung von new/delete<br />
einfach abgewöhnt habe und dementsprechend mir lieber den speicher nativ hole.</p>
<p>Das ich dass so mache heißt ja nicht zwangsläufig, dass ich der Meinung bin,<br />
dass alle diesen Weg nutzen sollen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> .<br />
Prinzipiell wollte ich hier dem Kloas nur eine alternative<br />
zu new anbieten, die mit Basistypen wunderbar klappt und auch<br />
nahebringt wie der Speicher eigentlich verwendet wird/(werden kann).</p>
<p>Sei gegrüßt Volkard</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858492</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Sat, 20 Feb 2010 02:09:05 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Sat, 20 Feb 2010 09:21:40 GMT]]></title><description><![CDATA[<p>Hierzu fallen mir ein paar Sachen ein...</p>
<pre><code class="language-cpp">typedef struct _mem_float{   // typedef struct brauchts in C++ nicht.
private:       // Nimm gleich class und du lannst dir das private sparen ;)
float *_ptr;
size_t _size;
public:
_mem_float() {_ptr=0;};
_mem_float(int i) {size=i*sizeof(float); _ptr=(float*)malloc(size); };
~_mem_float(){ free(_ptr);};
_mem_float &amp;operator=(const _mem_float&amp;__cpy)   // Zwei führende Unterstriche sollte man doch nicht verwenden, weil reserviert für Compiler, oder?
{
  if(this==&amp;__cpy) return *this;
  if(_ptr) free(_ptr);        // geht free(0) schief? Mit delete kann man sich den Test auf NULL sparen.
  size=__cpy.size;
  _ptr=(float*)malloc(size);   // AFAIK soll man doch den return von malloc nicht casten.
  memcpy((void*)_ptr,(void*)__cpy._ptr,size);
 return *this;
}
float &amp;operator[](const int &amp;i){ // das const int&amp; i bringt gar nix an Performance,
// da int zu kopieren genauso schnell ist wie ne Adresse zu übergeben.
    return (*(_ptr+i*sizeof(float)));};
}MEMFLOAT;
</code></pre>
<p>Mir ist klar dass das Beispiel dafür gedacht war, das malloc zu zeigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858519</guid><dc:creator><![CDATA[Sesamkuchen]]></dc:creator><pubDate>Sat, 20 Feb 2010 09:21:40 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Sat, 20 Feb 2010 12:38:42 GMT]]></title><description><![CDATA[<p>Kloas schrieb:</p>
<blockquote>
<p>angenommen ich vergesse das array zu deleten, wird der speicher denn automatisch bei programmende gelöscht?</p>
</blockquote>
<p>Nein, zumindest nicht durch dein Programm. Viele Betriebssysteme holen sich aber alle Ressourcen zurück, wenn ein Programm beendet wird, egal ob freigegeben oder nicht.</p>
<p>Man sollte immer alles was man mit <code>new</code> holt, wieder mit <code>delete</code> freigeben. Oder besser noch seine Klassen so anlegen, dass dies automatisch im Destruktor passiert. Oder einen der STL-Container benutzen, denn diese machen das schon automatisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858571</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 20 Feb 2010 12:38:42 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Sat, 20 Feb 2010 13:02:12 GMT]]></title><description><![CDATA[<p>@Sesamkuchen: In C++ ist ein Cast notwendig, da C++ nicht implizit nach void * castet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858589</guid><dc:creator><![CDATA[hjkhjk]]></dc:creator><pubDate>Sat, 20 Feb 2010 13:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Sat, 20 Feb 2010 13:48:19 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">float &amp;operator[](const int &amp;i){ // das const int&amp; i bringt gar nix an Performance,
// da int zu kopieren genauso schnell ist wie ne Adresse zu übergeben.
</code></pre>
</blockquote>
<p>Ja, dass ist richtig. Bei überladung anderer Operatoren wird aber nicht unbedingt auf ein int referenziert. Daher dient das quasi nur der Kontinuität.</p>
<p>Selbst LocalAlloc/GlobalAlloc/HeapAlloc sind zu casten.</p>
<p>Delete überprüft meines wissens nach den gepointed Speicher auf NULL (oder halt die konsistenz des stacks nach einen initialisierten typ, was wohl net immer klappt wenn es kein basistyp ist,...</p>
<p>Was mich interessiert ist: //typendefinitionen typedef struct in c++ brauchts net<br />
Meines wissens ist es ein unterschied mir eine structurvariable zu deklarieren oder einen global typ in form einer structur die ich beliebig initialisieren kann ?!</p>
<p>Seit gegrüßt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858610</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Sat, 20 Feb 2010 13:48:19 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Sat, 20 Feb 2010 14:55:30 GMT]]></title><description><![CDATA[<p>kann jemand mir mal weiter helfen, ich stecke gerade fest:</p>
<p>Bilden Sie ein Array von <strong>10 nullterminierten Strings!</strong> Speichern Sie mit Pointerarithmetik in jedem der Arrayelemente einen automatisch erzeugten Zufallstext mit einer Länge von mindestens 5 und maximal 30 Buchstaben! Der Text beginnt in jedem Element mit einem Großbuchstaben enthält dann ausschließlich Kleinbuchstaben!</p>
<p>kann jemand mir bisschen erklären und auch vllt die Lösungen vorschlagen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858663</guid><dc:creator><![CDATA[c++anfanger3]]></dc:creator><pubDate>Sat, 20 Feb 2010 14:55:30 GMT</pubDate></item><item><title><![CDATA[Reply to Arrayanzahl per Eingabe erzeugen on Sat, 20 Feb 2010 15:15:59 GMT]]></title><description><![CDATA[<p>c++anfanger3 schrieb:</p>
<blockquote>
<p>kann jemand mir mal weiter helfen, ich stecke gerade fest:</p>
<p>Bilden Sie ein Array von <strong>10 nullterminierten Strings!</strong> Speichern Sie mit Pointerarithmetik in jedem der Arrayelemente einen automatisch erzeugten Zufallstext mit einer Länge von mindestens 5 und maximal 30 Buchstaben! Der Text beginnt in jedem Element mit einem Großbuchstaben enthält dann ausschließlich Kleinbuchstaben!</p>
<p>kann jemand mir bisschen erklären und auch vllt die Lösungen vorschlagen</p>
</blockquote>
<p>1. Was hat das mit diesem Thread zu tun? Fang lieber ein neues Thema an.<br />
2. Bevor du das neue Thema anfängst, lies dir unbedingt <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html" rel="nofollow">diesen</a> Thread <strong>gründlich</strong> durch. Denn mit einer Frage wie du sie da oben stellst, wirst du keine ernstgemeinten Antworten bekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858685</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 20 Feb 2010 15:15:59 GMT</pubDate></item></channel></rss>