<?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[Dynamisch wachsende Struktur]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe letztens in der Berufsschule ein dynamisch wachsendes Feld programmiert und dachte mir, dass das ganze auch mit einer Struktur funktionieren muss. Bin mir aber jetzt gar nciht mehr so sicher, ob das überhaupt so sinnvoll ist was ich vorhabe.</p>
<p>Ich möchte gerne eine dynamische Schülerverwaltung programmieren. Ist der Ansatz von mir so richtig oder komplett falsch? Zudem bekomme ich in 2 Zeilen einen Fehler und ich weiß nicht warum.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

struct T_AzubiDaten {
					char str_Name[15];
					char str_Vorname[15];
					int i_AWP[4]; // AWP = Anwendungsentwicklung und Programmierung (Schulfach) -&gt; 4 Noten
					};

T_AzubiDaten* schuelerHinzufuegen(T_AzubiDaten* azubis, int&amp; counter){

	counter++;

	if(azubis != NULL){
		T_AzubiDaten* temp_azubi = new T_AzubiDaten[counter];
		// Einlesen des neuen Azubis, in die letzte Struktur schreiben
		cout &lt;&lt; &quot;Name: &quot;;
		cin &gt;&gt; (temp_azubi + (counter-1))-&gt;str_Name;
		cout &lt;&lt; &quot;Vorname: &quot;;
		cin &gt;&gt; (temp_azubi + (counter-1))-&gt;str_Vorname;
		for(int i = 0; i &lt; counter; i++){
			cout &lt;&lt; i+1 &lt;&lt; &quot;. Note: &quot;;
			cin &gt;&gt; (temp_azubi + (counter-1))-&gt;i_AWP[i];
		}

		// alte Azubis in temp Struktur kopieren
		for(int i = 0; i &lt; counter - 2; i++){
			(temp_azubi + i)-&gt;str_Name = (azubis + i)-&gt;str_Name; // ###### Fehler #######
			(temp_azubi + i)-&gt;str_Vorname = (azubis + i)-&gt;str_Vorname; // ###### Fehler #######
			for(int k = 0; k &lt; 4; k++)
				(temp_azubi + i)-&gt;i_AWP[k] = (azubis + i)-&gt;i_AWP[k];
		}
		azubis = temp_azubi;
		delete [] temp_azubi;
		temp_azubi = NULL;
	}
	else{
		azubis = new T_AzubiDaten[counter];
		// neuen Schueler in die letzte Struktur eintragen
		cout &lt;&lt; &quot;Name: &quot;;
		cin &gt;&gt; (azubis + (counter-1))-&gt;str_Name;
		cout &lt;&lt; &quot;Vorname: &quot;;
		cin &gt;&gt; (azubis + (counter-1))-&gt;str_Vorname;
		for(int i = 0; i &lt; 4; i++){
			cout &lt;&lt; i+1 &lt;&lt; &quot;. Note: &quot;;
			cin &gt;&gt; (azubis + (counter-1))-&gt;i_AWP[i];
		}
	}
	return azubis;
}

int main(){
	int counter = 0;
	T_AzubiDaten* gespeicherteAzubis = new T_AzubiDaten;
	schuelerHinzufuegen(gespeicherteAzubis, counter);
	schuelerHinzufuegen(gespeicherteAzubis, counter);

	// Ausgabe aller Azubis
	for(int i = 0; i &lt; 2; i++){
		cout &lt;&lt; (gespeicherteAzubis + i)-&gt;str_Name;
		cout &lt;&lt; (gespeicherteAzubis + i)-&gt;str_Vorname;
		for(int k = 0; k &lt; 4; k++){
			cout &lt;&lt; (gespeicherteAzubis +i)-&gt;i_AWP[k];
		}
	}
	system(&quot;Pause&quot;);
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/296988/dynamisch-wachsende-struktur</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 11:03:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/296988.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Dec 2011 13:52:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamisch wachsende Struktur on Fri, 16 Dec 2011 14:01:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe letztens in der Berufsschule ein dynamisch wachsendes Feld programmiert und dachte mir, dass das ganze auch mit einer Struktur funktionieren muss. Bin mir aber jetzt gar nciht mehr so sicher, ob das überhaupt so sinnvoll ist was ich vorhabe.</p>
<p>Ich möchte gerne eine dynamische Schülerverwaltung programmieren. Ist der Ansatz von mir so richtig oder komplett falsch? Zudem bekomme ich in 2 Zeilen einen Fehler und ich weiß nicht warum.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

struct T_AzubiDaten {
					char str_Name[15];
					char str_Vorname[15];
					int i_AWP[4]; // AWP = Anwendungsentwicklung und Programmierung (Schulfach) -&gt; 4 Noten
					};

T_AzubiDaten* schuelerHinzufuegen(T_AzubiDaten* azubis, int&amp; counter){

	counter++;

	if(azubis != NULL){
		T_AzubiDaten* temp_azubi = new T_AzubiDaten[counter];
		// Einlesen des neuen Azubis, in die letzte Struktur schreiben
		cout &lt;&lt; &quot;Name: &quot;;
		cin &gt;&gt; (temp_azubi + (counter-1))-&gt;str_Name;
		cout &lt;&lt; &quot;Vorname: &quot;;
		cin &gt;&gt; (temp_azubi + (counter-1))-&gt;str_Vorname;
		for(int i = 0; i &lt; counter; i++){
			cout &lt;&lt; i+1 &lt;&lt; &quot;. Note: &quot;;
			cin &gt;&gt; (temp_azubi + (counter-1))-&gt;i_AWP[i];
		}

		// alte Azubis in temp Struktur kopieren
		for(int i = 0; i &lt; counter - 2; i++){
			(temp_azubi + i)-&gt;str_Name = (azubis + i)-&gt;str_Name; // ###### Fehler #######
			(temp_azubi + i)-&gt;str_Vorname = (azubis + i)-&gt;str_Vorname; // ###### Fehler #######
			for(int k = 0; k &lt; 4; k++)
				(temp_azubi + i)-&gt;i_AWP[k] = (azubis + i)-&gt;i_AWP[k];
		}
		azubis = temp_azubi;
		delete [] temp_azubi;
		temp_azubi = NULL;
	}
	else{
		azubis = new T_AzubiDaten[counter];
		// neuen Schueler in die letzte Struktur eintragen
		cout &lt;&lt; &quot;Name: &quot;;
		cin &gt;&gt; (azubis + (counter-1))-&gt;str_Name;
		cout &lt;&lt; &quot;Vorname: &quot;;
		cin &gt;&gt; (azubis + (counter-1))-&gt;str_Vorname;
		for(int i = 0; i &lt; 4; i++){
			cout &lt;&lt; i+1 &lt;&lt; &quot;. Note: &quot;;
			cin &gt;&gt; (azubis + (counter-1))-&gt;i_AWP[i];
		}
	}
	return azubis;
}

int main(){
	int counter = 0;
	T_AzubiDaten* gespeicherteAzubis = new T_AzubiDaten;
	schuelerHinzufuegen(gespeicherteAzubis, counter);
	schuelerHinzufuegen(gespeicherteAzubis, counter);

	// Ausgabe aller Azubis
	for(int i = 0; i &lt; 2; i++){
		cout &lt;&lt; (gespeicherteAzubis + i)-&gt;str_Name;
		cout &lt;&lt; (gespeicherteAzubis + i)-&gt;str_Vorname;
		for(int k = 0; k &lt; 4; k++){
			cout &lt;&lt; (gespeicherteAzubis +i)-&gt;i_AWP[k];
		}
	}
	system(&quot;Pause&quot;);
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2157708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157708</guid><dc:creator><![CDATA[Blacky666]]></dc:creator><pubDate>Fri, 16 Dec 2011 14:01:00 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch wachsende Struktur on Fri, 16 Dec 2011 13:56:18 GMT]]></title><description><![CDATA[<p>Welche Fehlermeldung? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157711</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Fri, 16 Dec 2011 13:56:18 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch wachsende Struktur on Fri, 16 Dec 2011 14:02:50 GMT]]></title><description><![CDATA[<p>Oh man.. wo hast du das denn gelernt? oO<br />
Fang am besten noch mal ganz von vorne an. Lies dir ein bisschen was zu Klassen und zu std::vector (oder std::list) durch. (Und zu std::string..)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157714</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 16 Dec 2011 14:02:50 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch wachsende Struktur on Fri, 16 Dec 2011 14:18:30 GMT]]></title><description><![CDATA[<p>Blacky666 schrieb:</p>
<blockquote>
<p>Hallo,<br />
...<br />
int i_AWP[4];<br />
...</p>
</blockquote>
<p>Wenn es nur 4 Felder sein sollen ist das falsch.Du hast vergessen das es bei [0] anfängt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157726</guid><dc:creator><![CDATA[7xCore]]></dc:creator><pubDate>Fri, 16 Dec 2011 14:18:30 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch wachsende Struktur on Fri, 16 Dec 2011 14:22:11 GMT]]></title><description><![CDATA[<p>7xCore schrieb:</p>
<blockquote>
<p>Blacky666 schrieb:</p>
<blockquote>
<p>Hallo,<br />
...<br />
int i_AWP[4];<br />
...</p>
</blockquote>
<p>Wenn es nur 4 Felder sein sollen ist das falsch.Du hast vergessen das es bei [0] anfängt.</p>
</blockquote>
<p>Quatsch, was hat das denn mit der Definition zu tun? oO</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157729</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 16 Dec 2011 14:22:11 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch wachsende Struktur on Fri, 16 Dec 2011 14:44:05 GMT]]></title><description><![CDATA[<p>müsstest du in main nicht die azubis mit NULL initialisiern? (Zeile 55)<br />
Außerdem erstellst du temp_azubi, kopierst dann die Addresse nach azubis, und gibts dann den Speicher an dieser Adresse frei (delete[] temp_azubi). Danach hast du dann:<br />
1. Ein Speicherleak (der speicher von azubis wird nicht frei gegeben)<br />
2. In azubis steht eine Adresse auf den freigegebenen Speicher -&gt; Segmentation fault</p>
<p>Ich glaube du wolltest *azubis=*temp_azubi schreiben?<br />
Aber verwende am besten std::vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157742</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Fri, 16 Dec 2011 14:44:05 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch wachsende Struktur on Fri, 16 Dec 2011 14:49:14 GMT]]></title><description><![CDATA[<p>pyhax schrieb:</p>
<blockquote>
<p>Aber verwende am besten std::vector.</p>
</blockquote>
<p>Na ja, &quot;verwende&quot; ist so eine Sache, wenn er lernen soll mit Speicher umzugehen. Aber er könnte sich ja zumindest mal die Struktur von std::vector/std::list angucken, und dann versuchen etwas ähnliches für seine Zwecke zu implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157747</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 16 Dec 2011 14:49:14 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch wachsende Struktur on Fri, 16 Dec 2011 15:44:33 GMT]]></title><description><![CDATA[<p>7xCore schrieb:</p>
<blockquote>
<p>Blacky666 schrieb:</p>
<blockquote>
<p>Hallo,<br />
...<br />
int i_AWP[4];<br />
...</p>
</blockquote>
<p>Wenn es nur 4 Felder sein sollen ist das falsch.Du hast vergessen das es bei [0] anfängt.</p>
</blockquote>
<p>Wow, deklarierst du immer mit einem Element zuwenig? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <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="😃"
    /> Lieber nur Tipps geben, wenn du dir sicher bist.</p>
<p>Btw, ein Feld ist ein Array. Du meinst eher Elemente des Feldes/Arrays.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157780</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Fri, 16 Dec 2011 15:44:33 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch wachsende Struktur on Fri, 16 Dec 2011 17:50:50 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Mal auf die Schnelle habe ich folgende Fehler gefunden:</p>
<p>1. In den Zeilen 29 und 30 ersetze die Zuweisung jeweils durch einen Aufruf von strcpy. <strong>Merke</strong>: Arrays sind keine LValues, dürfen daher nicht auf der linken Seite einer Zuweisung stehen.</p>
<p>2. In Zeile 35 gibst Du den Speicher, dessen Adresse Du eine Zeile vorher noch im Zeiger azubis gespeichert, frei. Damit wird nicht nur der Zeiger temp_azubis wertlos sondern auch der Zeiger azubis.</p>
<p>3. schuelerHinzufuegen gibt zwar die neue Adresse Deines Arrays zurück, main interessiert das aber nicht die Bohne sondern verwendet stattdessen einfach die Adresse des Speichers den es selbst angefordert hat, der aber von schuelerHinzufuegen schon längst freigegeben wurde.</p>
<p>Kein Fehler, aber ungewöhnlich:</p>
<p>Ersetze</p>
<p>(temp_azubi + i)-&gt;...<br />
durch<br />
temp_azubi[i]. ...</p>
<p>Tip für das Verständnis von Zeigern:</p>
<p>Zeiger sind wie Visitenkarten. Wenn der Bewohner umzieht, weil er ein größeres Haus braucht, muß er neue Visitenkarten drucken. Alle alten sind wertlos.</p>
<p>Wenn Du deine Visitenkarten kopierst und dann umziehst, mußt Du nicht nur deine altern Visitenkarten wegwerfen, sondern auch die neuen.</p>
<p>Wenn Du eine Visitenkarte zum Aktualisieren hergibst. die neuen aber gleich wegwirfst sondern stattdessen die alten weiter benutzt, hast Du auch ein Problem.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157826</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 16 Dec 2011 17:50:50 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch wachsende Struktur on Tue, 27 Dec 2011 06:37:16 GMT]]></title><description><![CDATA[<p>Vielen dank für die vielen Antworten. Zu der Frage, wo man so was lernt -&gt; Berufsschule Fachinformatiker... Ich habe mir das schon gedacht, dass man mein Vorhaben viel einfacher lösen kann. Aber auf solche Fragen, haben meine Lehrer keine Antwort und so versuche ich mir das alles selbst zusammen zu reimen.</p>
<p>@ cooky451: Ganz von vorne?! Ich hoffe du meinst nur das Verständnis von Zeigern...</p>
<p>Ich habe jetzt angefangen ein wenig mit std::vector zu arbeiten. Sobald ich zu einem Ergebnis gekommen bin, sage ich euch bescheid. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2161207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2161207</guid><dc:creator><![CDATA[Blacky666]]></dc:creator><pubDate>Tue, 27 Dec 2011 06:37:16 GMT</pubDate></item></channel></rss>