<?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[Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist]]></title><description><![CDATA[<p>Moin moin,</p>
<p>Folgende Frage.</p>
<p>Ich habe eine Struktur:</p>
<pre><code>struct meineStruktur
{
int variable;
}
</code></pre>
<p>und eine Funktion:</p>
<pre><code>void meineFunktion(meineStruktur feld[100])
{
feld[1].variable=5;
}
</code></pre>
<p>In der Hauptfunktion greife ich folgendermaßen darauf zu:</p>
<pre><code>int main()
{
meineStruktur feld[100];
meineFunktion(feld);
return 0;
}
</code></pre>
<p>Ist dies korrekt?<br />
Mir kommt die übergabe an die Funktion in main etwas skeptisch vor... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/234314/frage-zur-übergabe-von-array-an-funktion-wenn-array-vom-datentyp-einer-struktur-ist</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 10:20:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/234314.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 16 Feb 2009 13:45:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Mon, 16 Feb 2009 13:45:36 GMT]]></title><description><![CDATA[<p>Moin moin,</p>
<p>Folgende Frage.</p>
<p>Ich habe eine Struktur:</p>
<pre><code>struct meineStruktur
{
int variable;
}
</code></pre>
<p>und eine Funktion:</p>
<pre><code>void meineFunktion(meineStruktur feld[100])
{
feld[1].variable=5;
}
</code></pre>
<p>In der Hauptfunktion greife ich folgendermaßen darauf zu:</p>
<pre><code>int main()
{
meineStruktur feld[100];
meineFunktion(feld);
return 0;
}
</code></pre>
<p>Ist dies korrekt?<br />
Mir kommt die übergabe an die Funktion in main etwas skeptisch vor... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664678</guid><dc:creator><![CDATA[44203215ext]]></dc:creator><pubDate>Mon, 16 Feb 2009 13:45:36 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Mon, 16 Feb 2009 15:07:11 GMT]]></title><description><![CDATA[<p>Übergib das Feld per Referenz, sonst wird das ganze Array kopiert.</p>
<pre><code>void meineFunktion(meineStruktur [b]&amp;[/b] feld[100])
{
    feld[1].variable=5;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1664726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664726</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Mon, 16 Feb 2009 15:07:11 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Mon, 16 Feb 2009 15:12:08 GMT]]></title><description><![CDATA[<p>Ok, das wäre eine Lösung, vielen Dank.<br />
Das Problem ist nur, ich löse gerade eine Aufgabe zu meinem Fernstudium und ich bin mit dem Stoff &quot;noch nicht soweit&quot;.</p>
<p>Referenzen sind also noch nicht gelehrt worden und die Aufgabe muss trotzdem lösbar sein.</p>
<p>Es geht mir auch mehr darum ob hier:</p>
<pre><code>meineFunktion(feld);
</code></pre>
<p>die Übergabe richtig ist, also ob das Array ohne [] oder sonst etwas angegeben wird und ob der Zugriff innerhalb einer Funtion auf die Struktur so genutzt werden kann?</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664738</guid><dc:creator><![CDATA[44203215ext]]></dc:creator><pubDate>Mon, 16 Feb 2009 15:12:08 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Mon, 16 Feb 2009 16:11:29 GMT]]></title><description><![CDATA[<p>jencas schrieb:</p>
<blockquote>
<p>Übergib das Feld per Referenz, sonst wird das ganze Array kopiert.</p>
<pre><code>void meineFunktion(meineStruktur [b]&amp;[/b] feld[100])
{
    feld[1].variable=5;
}
</code></pre>
</blockquote>
<p>Das bringt gar nicht, denn Arrays werden immer als Zeiger übergeben.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">void meineFunktion(meineStruktur feld[100])
{
    std::cout &lt;&lt; sizeof(feld) &lt;&lt; '\n'; //gibt sizeof(&amp;meineStruktur), (vermutlich 4), weils als Zeiger uebergeben wird
    feld[1].variable=5;
}	

int main()
{
    meineStruktur feld[100];
    std::cout &lt;&lt; sizeof(feld) &lt;&lt; '\n'; //gibt 100 * sizeof(feld) weils ein Array ist (vermutlich 400)
    meineFunktion(feld); //'feld' wird als Zeiger uebergeben!
    return 0;
}
</code></pre>
<p>Am Besten, Du übergibst Arrays als Zeiger + Längenanbgabe:</p>
<pre><code class="language-cpp">void meineFunktion(meineStruktur * feld, size_t n)
{
    //...irgendwas
}
</code></pre>
<p>Das macht Dich innerhalb der Funktion größenunabhängig.<br />
Noch besser wäre es, die Standardlibrary-Container zu benutzen. Schau Dir z.B. mal den<a href="http://www.cplusplus.com/reference/stl/vector/" rel="nofollow"> <code>std::vector&lt;T&gt;</code> </a>an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664773</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 16 Feb 2009 16:11:29 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Mon, 16 Feb 2009 16:12:38 GMT]]></title><description><![CDATA[<p>jencas schrieb:</p>
<blockquote>
<p>Übergib das Feld per Referenz, sonst wird das ganze Array kopiert.</p>
</blockquote>
<p>Sicher?</p>
<p><strong>@44203215ext</strong><br />
Die Übergabe ist schon richtig. Arrays werden in C++ immer als Zeiger auf das erste Element übergeben. D.h. alle Änderungen die in der Funktion durchgeführt werden betreffen das Originalarray.</p>
<p>Es ist auch Egal ob deine Funktionsdeklaration</p>
<pre><code class="language-cpp">void meineFunktion(meineStruktur feld[100])
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">void meineFunktion(meineStruktur feld[])
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">void meineFunktion(meineStruktur* feld)
</code></pre>
<p>lautet.</p>
<p>Den Compiler interressieren nur die für die Zeigerarithmetik nötigen Informationen.</p>
<p>Du musst allerdings selbst darauf achten die Arraygrenzen nicht zu überschreiten.</p>
<p>Innerhalb der Funktion wäre auch der Zugriff</p>
<pre><code class="language-cpp">feld[999].variable=5;
</code></pre>
<p>möglich, was aber natürlich später dann zu einem Laufzeitfehler führt.</p>
<p>Häufig macht es daher Sinn auch die Arraygröße an die Funktion zu übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664776</guid><dc:creator><![CDATA[Kritiker]]></dc:creator><pubDate>Mon, 16 Feb 2009 16:12:38 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Mon, 16 Feb 2009 16:14:50 GMT]]></title><description><![CDATA[<p>Ver#?*#? !! War zu langsam. <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/1664779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664779</guid><dc:creator><![CDATA[Kritiker]]></dc:creator><pubDate>Mon, 16 Feb 2009 16:14:50 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Mon, 16 Feb 2009 18:13:21 GMT]]></title><description><![CDATA[<p>Kritiker schrieb:</p>
<blockquote>
<p>Ver#?*#? !! War zu langsam. <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>
</blockquote>
<p>Entweder habe ich ein Dejà vue, oder wir hatten gestern genau die gleiche Situation. <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="😉"
    /> (Kopie, du fragst sicher und bist zu langsam.. :p)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664870</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 16 Feb 2009 18:13:21 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Mon, 16 Feb 2009 18:15:43 GMT]]></title><description><![CDATA[<p>jencas schrieb:</p>
<blockquote>
<p>Übergib das Feld per Referenz, sonst wird das ganze Array kopiert.</p>
<pre><code>void meineFunktion(meineStruktur [b]&amp;[/b] feld[100])
</code></pre>
</blockquote>
<p>Zu allem Überfluss ist das auch noch ein Array aus Referenzen -- sowas gibt es nicht. Wenn du ein Array per Referenz übergeben willst, müsste das so aussehen:</p>
<pre><code class="language-cpp">void meineFunktion(meineStruktur (&amp;feld)[100])
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1664874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664874</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 16 Feb 2009 18:15:43 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Mon, 16 Feb 2009 19:20:29 GMT]]></title><description><![CDATA[<p>Es ist ja schön das ihr euch einig seit, aber könnten wir zum Thema zurückkommen?<br />
Ich hatte ein paar Threads weiter oben gesagt, dass ich nicht mit Referenzen arbeiten soll.</p>
<p>Einfache Frage:</p>
<p>Ist das richtig:</p>
<pre><code>structurname feld[100];
function(feld);
</code></pre>
<p>Die function greif dann auf die elemente von structurname zu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664907</guid><dc:creator><![CDATA[44203215ext]]></dc:creator><pubDate>Mon, 16 Feb 2009 19:20:29 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Mon, 16 Feb 2009 19:24:12 GMT]]></title><description><![CDATA[<p>44203215ext schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Es wurde schon ein paar Mal gesagt, dass es so zwar <em>geht</em>, aber dass man besser die Größe des Arrays mit übergeben sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664910</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 16 Feb 2009 19:24:12 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Mon, 16 Feb 2009 22:46:48 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Das bringt gar nicht, denn Arrays werden immer als Zeiger übergeben.</p>
</blockquote>
<p>Nein, das stimmt nicht. Man kann Arrays entweder als Zeiger (auf das erste Element) oder als Referenz (auf das Array als Objekt) übergeben. Bashar hat ja ein Beispiel gezeigt.</p>
<p>Mit Templates kann das praktisch sein, weil dann die Grösse nicht mehr zusätzlich übergeben werden muss und trotzdem keine Information verliert:</p>
<pre><code class="language-cpp">template &lt;size_t N&gt;
void meineFunktion(meineStruktur (&amp;feld)[N]);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1665011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665011</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 16 Feb 2009 22:46:48 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Tue, 17 Feb 2009 08:24:14 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Das funktioniert leider nur für statische Arrays. Bei dynamischen Arrays funktioniert das leider nicht mehr, weil die benötigte Information anonym und nicht verfügbar ist. Solche Konstrukte sind eher gefährlich denn nützlich.<br />
Die Übergabe mit Zeiger+Größe hat ja den Sinn, ggf. beliebige Arrays beliebiger Länge verarbeiten zu können. Das ist bei der Variante mit Ref+Template nicht mehr gegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665094</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 17 Feb 2009 08:24:14 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Tue, 17 Feb 2009 16:50:41 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Kritiker schrieb:</p>
<blockquote>
<p>Ver#?*#? !! War zu langsam. <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>
</blockquote>
<p>Entweder habe ich ein Dejà vue, oder wir hatten gestern genau die gleiche Situation. <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="😉"
    /> (Kopie, du fragst sicher und bist zu langsam.. :p)</p>
</blockquote>
<p>Gar nicht gemerkt, dass das Wort an mich gerichtet wurde. <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>Ja, als unregistrierter Outsider bleibt einem ja nur die Möglichkeit einen Kommentar hinzuzufügen, wenn der eigene Beitrag zu spät kommt und praktisch dasselbe aussagt wie der vom Vordermann dem Schnellschreiber. <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="😃"
    /> <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/1665393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665393</guid><dc:creator><![CDATA[Kritiker]]></dc:creator><pubDate>Tue, 17 Feb 2009 16:50:41 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur übergabe von Array an Funktion wenn array vom Datentyp einer Struktur ist on Wed, 18 Feb 2009 13:37:42 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Das funktioniert leider nur für statische Arrays. Bei dynamischen Arrays funktioniert das leider nicht mehr, weil die benötigte Information anonym und nicht verfügbar ist. Solche Konstrukte sind eher gefährlich denn nützlich.</p>
</blockquote>
<p>Ja, es funktioniert nur mit statischen Arrays. Aber zu sagen, Arrays könnten nur als Zeiger übergeben werden, ist dennoch falsch. Vor allem, weil mit &quot;Array&quot; in erster Linie ein statisches Array bezeichnet wird. Und warum soll die Übergabe als Referenz gefährlich sein? Wenn man etwas anderes als ein statisches Array übergibt, gibts einen Compilerfehler. Sicherer kann man ein Array (an sich) nicht übergeben.</p>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Die Übergabe mit Zeiger+Größe hat ja den Sinn, ggf. beliebige Arrays beliebiger Länge verarbeiten zu können. Das ist bei der Variante mit Ref+Template nicht mehr gegeben.</p>
</blockquote>
<p>Da hast du schon Recht. Allerdings kommt es in der Praxis sowieso selten vor, dass man auf rohen Arrays arbeitet. Wenn, dann eher innerhalb einer Datenstruktur, und da könnte die Templatelösung bei statischen Arrays schon von Vorteil sein. Aber ich verwende zumindest immer <code>std::tr1::array</code> , wenn ich statische Arrays brauche, und ansonsten die STL-Container.</p>
<p>Kritiker schrieb:</p>
<blockquote>
<p>Ja, als unregistrierter Outsider bleibt einem ja nur die Möglichkeit einen Kommentar hinzuzufügen, wenn der eigene Beitrag zu spät kommt und praktisch dasselbe aussagt wie der vom Vordermann dem Schnellschreiber. <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="😃"
    /> <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>
</blockquote>
<p>Wieder ein Grund, sich anzumelden. Dann kannst du auch vermeiden, dass Flamewars unter deinem Namen ausgetragen werden. <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/1665735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665735</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 18 Feb 2009 13:37:42 GMT</pubDate></item></channel></rss>