<?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[Array Problem bei Übergabe]]></title><description><![CDATA[<p>Hallo zusammen !</p>
<p>Ich komme aus dem Java Bereich und hab jetzt ein paar kleine Probleme in meinem C++ Programm wenn es darum geht Arrays zwischen Funktionen zu übergeben.<br />
Ich weiß noch das man da mit den Pointern rumhantieren muß (das hat mich immer sehr verwirrt) aber leider nicht mehr genau wie. Ich Poste mal hier einen Beispielcode, der zeigt wo mein Problem liegt:</p>
<pre><code class="language-cpp">int max = 10;

Myclass* myarray[max];      //Arrays erstellen
Myclass* myparray1[max];	
Myclass* myparray2[max];	

for (loop=0;loop&lt;max;loop++)	//Arrays zuweisen		
	{
	myarray1[loop] = new Myclass();
	myarray2[loop] = new Myclass();

	}

void myfunktion(Myclass* param1){  // Funktion soll Array erhalten 

myarray = *param1;  //Dies ist vielleicht gar nicht nötig, myarray sollte     
                    //Speicherplatz von param1 haben.
}

void mymain(){

myfunktion(*myarray1);  //Array wird übergeben
myfunktion(*myarray2);

}
</code></pre>
<p>Also kurz beschrieben, ich will zwei(und mehr) Arrays aus Klassenelementen erstellen. Diese Array füll ich vorher. Dann will ich die Funktion &quot;myfunktion&quot; aufrufen können und die soll dann mit dem Array arbeiten welches ich als Parameter übergebe (call by reference).</p>
<p>So, ich hoffe jemand kann mir helfen und zeigen wie ich diese Pointer setzten muß, ich denke das ich sicherlich nur ein leichtes Anfängerproblem <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>
<p>mfg Mari2k</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/176167/array-problem-bei-übergabe</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 12:15:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/176167.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 18 Mar 2007 15:13:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array Problem bei Übergabe on Sun, 18 Mar 2007 15:13:06 GMT]]></title><description><![CDATA[<p>Hallo zusammen !</p>
<p>Ich komme aus dem Java Bereich und hab jetzt ein paar kleine Probleme in meinem C++ Programm wenn es darum geht Arrays zwischen Funktionen zu übergeben.<br />
Ich weiß noch das man da mit den Pointern rumhantieren muß (das hat mich immer sehr verwirrt) aber leider nicht mehr genau wie. Ich Poste mal hier einen Beispielcode, der zeigt wo mein Problem liegt:</p>
<pre><code class="language-cpp">int max = 10;

Myclass* myarray[max];      //Arrays erstellen
Myclass* myparray1[max];	
Myclass* myparray2[max];	

for (loop=0;loop&lt;max;loop++)	//Arrays zuweisen		
	{
	myarray1[loop] = new Myclass();
	myarray2[loop] = new Myclass();

	}

void myfunktion(Myclass* param1){  // Funktion soll Array erhalten 

myarray = *param1;  //Dies ist vielleicht gar nicht nötig, myarray sollte     
                    //Speicherplatz von param1 haben.
}

void mymain(){

myfunktion(*myarray1);  //Array wird übergeben
myfunktion(*myarray2);

}
</code></pre>
<p>Also kurz beschrieben, ich will zwei(und mehr) Arrays aus Klassenelementen erstellen. Diese Array füll ich vorher. Dann will ich die Funktion &quot;myfunktion&quot; aufrufen können und die soll dann mit dem Array arbeiten welches ich als Parameter übergebe (call by reference).</p>
<p>So, ich hoffe jemand kann mir helfen und zeigen wie ich diese Pointer setzten muß, ich denke das ich sicherlich nur ein leichtes Anfängerproblem <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>
<p>mfg Mari2k</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1247781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1247781</guid><dc:creator><![CDATA[Mari2k]]></dc:creator><pubDate>Sun, 18 Mar 2007 15:13:06 GMT</pubDate></item><item><title><![CDATA[Reply to Array Problem bei Übergabe on Sun, 18 Mar 2007 15:22:56 GMT]]></title><description><![CDATA[<p>Hallo,<br />
wenn ich es richtig verstanden habe willst du ein einfaches Array aus Objekten deiner Klasse Myclass. Die erstellst du mit</p>
<pre><code class="language-cpp">Myclass myarray[max];      //Arrays erstellen
Myclass myparray1[max];   
Myclass myparray2[max];
</code></pre>
<p>Du hast ja mit</p>
<pre><code>Myclass* myarray[max];
</code></pre>
<p>einen Zeiger auf ein Array oder so erstellt!</p>
<p>Und da du ein Array mit fester Anzahl hast, wurde bereits beim erstellen Speicher für max Objekte angefordert, also musst du die Zuweisung nicht mit</p>
<pre><code class="language-cpp">myarray1[loop] = new Myclass();
</code></pre>
<p>machen, da</p>
<pre><code>new
</code></pre>
<p>ja wieder Speicher anfordert...<br />
Ich hoffe mal das stimmt soweit, bin auch grad dabei C++ zu lernen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1247790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1247790</guid><dc:creator><![CDATA[uekue]]></dc:creator><pubDate>Sun, 18 Mar 2007 15:22:56 GMT</pubDate></item><item><title><![CDATA[Reply to Array Problem bei Übergabe on Sun, 18 Mar 2007 16:05:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Also das &quot;new&quot; ist ja nur dazu da um mir eine neue Instanz für die Klasse zu erstellen, die wird dann in dem Array (auf dem bestimmten Platz) gespeichert. Das hat soweit auch alles geklapt, habe halt nur Probleme bei der Übergabe von dem Array (call by reference) Mymain zu Myfunktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1247817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1247817</guid><dc:creator><![CDATA[Mari2k]]></dc:creator><pubDate>Sun, 18 Mar 2007 16:05:01 GMT</pubDate></item><item><title><![CDATA[Reply to Array Problem bei Übergabe on Sun, 18 Mar 2007 16:08:46 GMT]]></title><description><![CDATA[<p>Mari2k schrieb:</p>
<blockquote>
<p>Also das &quot;new&quot; ist ja nur dazu da um mir eine neue Instanz für die Klasse zu erstellen</p>
</blockquote>
<p>Du kannst in C++ (im Gegensatz zu Java) Instanzen auch ohne new erstellen. Oder hat das einen tieferen Sinn, dass du Zeiger benutzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1247820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1247820</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Sun, 18 Mar 2007 16:08:46 GMT</pubDate></item><item><title><![CDATA[Reply to Array Problem bei Übergabe on Sun, 18 Mar 2007 16:25:51 GMT]]></title><description><![CDATA[<p>Was mir noch aufgefallen ist:<br />
Du machst da eine Zuweisung von einem Array auf ein anderes in</p>
<pre><code class="language-cpp">void myfunktion(Myclass* param1){  // Funktion soll Array erhalten

myarray = *param1;  //Dies ist vielleicht gar nicht nötig, myarray sollte    
                    //Speicherplatz von param1 haben.
}
</code></pre>
<p>und das ist glaub ich so nicht möglich! Dazu müsstest du evtl. den Zuweisungsoper überladen!<br />
Ausserdem erwartet deine Funktion myfunktion nen Zeiger als Argument, und du übergibst das Array ja mit *myarray1 ja dereferenziert!<br />
Weiss nicht ob das so stimmt, aber das ist mir noch aufgefallen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1247840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1247840</guid><dc:creator><![CDATA[uekue]]></dc:creator><pubDate>Sun, 18 Mar 2007 16:25:51 GMT</pubDate></item><item><title><![CDATA[Reply to Array Problem bei Übergabe on Sun, 18 Mar 2007 17:37:46 GMT]]></title><description><![CDATA[<p>uekue schrieb:</p>
<blockquote>
<p>Dazu müsstest du evtl. den Zuweisungsoper überladen!<br />
Ausserdem erwartet deine Funktion myfunktion nen Zeiger als Argument, und du übergibst das Array ja mit *myarray1 ja dereferenziert!<br />
Weiss nicht ob das so stimmt, aber das ist mir noch aufgefallen!</p>
</blockquote>
<p>Ja, also mein Code ist auch nicht richtig, wahrscheinlich sind die Pointer zeichen total falsch. Ich weiß halt nicht genau wie ich das komplette Array an die Funktion übergeben soll. Bisher arbeitet die Funktion mit einen globalen Array, das funktioniert auch ganz gut, nur wollte ich das jetzt mit Parameter übergabe machen.</p>
<p>Wär nett wenn jemand ein mir anhand eines Beispiels zeigen könnte wie sowas geht <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/1247879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1247879</guid><dc:creator><![CDATA[Mari2k]]></dc:creator><pubDate>Sun, 18 Mar 2007 17:37:46 GMT</pubDate></item><item><title><![CDATA[Reply to Array Problem bei Übergabe on Sun, 18 Mar 2007 18:06:19 GMT]]></title><description><![CDATA[<p>Du kannst natürlich einen Zeiger übergeben, wenn du mit dem &quot;originalen&quot; Array weiterarbeiten willst.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">void arrayfunc(int* array, int numberelements)
{
   for (int i=0;i&lt;numberelements;i++)
      std::cout &lt;&lt; array[i];                        //Array wird ausgegeben
   std::cout &lt;&lt; std::endl;
}

void arrayfunc2(int* array, int numberelements)
{
   for (int i=0;i&lt;numberelements;i++)
      array[i] = 5*i;                         //originales Array wird überschrieben
}

int main()
{
int iarray[10]={1,2,3,4,5,6,7,8,9,10};        //erstellt neues int-Array mit den
                                              //Werten 1 2 3 4 5 6 7 8 9 10 
arrayfunc(iarray,10);                       //ruft arrayfunc() auf und übergibt 
                                              //einen Zeiger auf das erste Element des Arrays
                                              //-&gt;es wird keine Kopie erstellt!!!

arrayfunc2(iarray,10);                      // es wird der gleiche Zeiger übergeben
                                              //-&gt;wieder keine Kopie! Orginal-Array wird überschrieben!!!

arrayfunc(iarray,10);                       //verändertes Array wird ausgegeben
return 0;
}
</code></pre>
<p>Edit: das gleiche müsste auch mit Referenzen anstatt Zeigern funktionieren!<br />
Und falls du dein originales Array nicht direkt benutzen möchtest, sondern eine Kopie davon haben willst, dann kannst du das Array in eine Struktur verpacken und die übergeben!</p>
<pre><code class="language-cpp">struct iarray               //Struktur definieren
{
   int a[10];
};

iarray myarray;            //Struktur mit Namen myarray erstellen

func(myarray);             //Struktur wie Variable übergeben

void func(iarray array);   //Prototyp von func()
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1247890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1247890</guid><dc:creator><![CDATA[uekue]]></dc:creator><pubDate>Sun, 18 Mar 2007 18:06:19 GMT</pubDate></item><item><title><![CDATA[Reply to Array Problem bei Übergabe on Sun, 18 Mar 2007 18:19:41 GMT]]></title><description><![CDATA[<p>Vielen dank für die Hilfe !</p>
<p>Ich glaube ich habs jetzt hinbekommen, allerding war es noch ein stück komplizierter da ich von vornerein schon ein Pointer Array hatte.</p>
<p>Also im endeffekt (wenn ich dein beispiel nehme):</p>
<p>Funktion aufrufen mit :<br />
arrayfunc(iarray);</p>
<p>Und bei der Funktion dann:<br />
void arrayfunc(int** array)</p>
<p>Damit scheint jetzt alles zu klappen <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1247913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1247913</guid><dc:creator><![CDATA[Mari2k]]></dc:creator><pubDate>Sun, 18 Mar 2007 18:19:41 GMT</pubDate></item><item><title><![CDATA[Reply to Array Problem bei Übergabe on Sun, 18 Mar 2007 18:25:30 GMT]]></title><description><![CDATA[<p>Wieso benutzt du überhaupt ein Pointer Array?<br />
bei</p>
<pre><code class="language-cpp">int array[10];
</code></pre>
<p>ist ja</p>
<pre><code class="language-cpp">array
</code></pre>
<p>schon ein Zeiger auf das erste Element!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1247917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1247917</guid><dc:creator><![CDATA[uekue]]></dc:creator><pubDate>Sun, 18 Mar 2007 18:25:30 GMT</pubDate></item><item><title><![CDATA[Reply to Array Problem bei Übergabe on Mon, 19 Mar 2007 09:24:09 GMT]]></title><description><![CDATA[<p>Weil diese Pointer auf Instanzen von Klassen zeigen bei mir, ich hatte deins nur als Beispiel genommen <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/1248188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248188</guid><dc:creator><![CDATA[Mari2k]]></dc:creator><pubDate>Mon, 19 Mar 2007 09:24:09 GMT</pubDate></item><item><title><![CDATA[Reply to Array Problem bei Übergabe on Mon, 19 Mar 2007 18:27:31 GMT]]></title><description><![CDATA[<p>Ich kann mich irren, aber ich glaube in C++ braucht man keine Zeiger, man kann auf die Instanzen (wenn das die Objekte sind) wie auf Variablen bzw. Strukturen zugreifen, Zeiger gehen aber natürlich auch!</p>
<pre><code class="language-cpp">classname objectname;
classname *objectpointer;
objectpointer = new classname;
objectname.memberfunction();                  // wie Struktur
objectpointer-&gt;memberfunction();                // ist dann so wie du es machst oder?
                                              // ist aber meines Wissens nach völlig gleichwertig!
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1248645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248645</guid><dc:creator><![CDATA[uekue]]></dc:creator><pubDate>Mon, 19 Mar 2007 18:27:31 GMT</pubDate></item></channel></rss>