<?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 an Funktion übergeben]]></title><description><![CDATA[<p>Hallo,</p>
<p>sorry vorab - ich weiß diese Frage gab es bereits. Ich verstehe aber den Ansatz nicht und bräuchte hier noch ein wenig Unterstützung. Ich möchte ein mehrdimensionales Array übergeben, soweit so gut:</p>
<pre><code>#include &lt;iostream&gt;
#define DIM1 5
#define DIM2 5

void out(int feld[DIM1][DIM2]) {
   int i, j;

   for(i = 0; i &lt; DIM1; i++) {
      for(j = 0; j &lt; DIM2; j++) {
	 std::cout &lt;&lt; feld[i][j];
      }
      std::cout &lt;&lt; &quot;\n&quot;;
   }
   std::cout &lt;&lt; &quot;\n&quot;;
}

int main() {
   int val[DIM1][DIM2];
   int i, j;

   for(i = 0; i &lt; DIM1; i++)
      for(j = 0; j &lt; DIM2; j++)
         val[i][j] = i+j;

   out(val);
   return 0;
}
</code></pre>
<p>Nun wird ja der Array kopiert und eine Kopie dessen bearbeitet. Optimal wäre ja lediglich die Adresse des Arrays zu übergeben, oder? Und hier ist mein Problem. Wie gehe ich das nun korrekter Weise an?</p>
<p>Die Grundlagen der Zeiger habe ich verstanden, leider steige ich hier komplett aus. In Verbindung mit Arrays komme ich regelmäßig durcheinander.</p>
<p>Gruß<br />
CPPEinsteiger</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/315689/array-an-funktion-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Fri, 31 Jul 2026 03:31:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/315689.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Apr 2013 12:42:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array an Funktion übergeben on Tue, 09 Apr 2013 12:42:51 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>sorry vorab - ich weiß diese Frage gab es bereits. Ich verstehe aber den Ansatz nicht und bräuchte hier noch ein wenig Unterstützung. Ich möchte ein mehrdimensionales Array übergeben, soweit so gut:</p>
<pre><code>#include &lt;iostream&gt;
#define DIM1 5
#define DIM2 5

void out(int feld[DIM1][DIM2]) {
   int i, j;

   for(i = 0; i &lt; DIM1; i++) {
      for(j = 0; j &lt; DIM2; j++) {
	 std::cout &lt;&lt; feld[i][j];
      }
      std::cout &lt;&lt; &quot;\n&quot;;
   }
   std::cout &lt;&lt; &quot;\n&quot;;
}

int main() {
   int val[DIM1][DIM2];
   int i, j;

   for(i = 0; i &lt; DIM1; i++)
      for(j = 0; j &lt; DIM2; j++)
         val[i][j] = i+j;

   out(val);
   return 0;
}
</code></pre>
<p>Nun wird ja der Array kopiert und eine Kopie dessen bearbeitet. Optimal wäre ja lediglich die Adresse des Arrays zu übergeben, oder? Und hier ist mein Problem. Wie gehe ich das nun korrekter Weise an?</p>
<p>Die Grundlagen der Zeiger habe ich verstanden, leider steige ich hier komplett aus. In Verbindung mit Arrays komme ich regelmäßig durcheinander.</p>
<p>Gruß<br />
CPPEinsteiger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314080</guid><dc:creator><![CDATA[CPPEinsteiger]]></dc:creator><pubDate>Tue, 09 Apr 2013 12:42:51 GMT</pubDate></item><item><title><![CDATA[Reply to Array an Funktion übergeben on Tue, 09 Apr 2013 12:47:57 GMT]]></title><description><![CDATA[<p>du übergibst automatisch die adresse. hier wird nicht kopiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314083</guid><dc:creator><![CDATA[12345]]></dc:creator><pubDate>Tue, 09 Apr 2013 12:47:57 GMT</pubDate></item><item><title><![CDATA[Reply to Array an Funktion übergeben on Tue, 09 Apr 2013 13:12:30 GMT]]></title><description><![CDATA[<p>Das Problem mit 2D-Arrays wird je jede Woche gefühlt 17-mal diskutiert. Bitte bemüh´ doch die Suchfunktion des Forums.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314098</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 09 Apr 2013 13:12:30 GMT</pubDate></item><item><title><![CDATA[Reply to Array an Funktion übergeben on Tue, 09 Apr 2013 13:24:10 GMT]]></title><description><![CDATA[<p>12345 schrieb:</p>
<blockquote>
<p>du übergibst automatisch die adresse. hier wird nicht kopiert.</p>
</blockquote>
<p>super, vielen Dank <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/2314109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314109</guid><dc:creator><![CDATA[CPPEinsteiger]]></dc:creator><pubDate>Tue, 09 Apr 2013 13:24:10 GMT</pubDate></item><item><title><![CDATA[Reply to Array an Funktion übergeben on Tue, 09 Apr 2013 14:22:35 GMT]]></title><description><![CDATA[<p>Statt den echten Arrays nutzt man in C++, genau um solche Fehler zu vermeiden, das Klassentemplate <code>std::array</code> . Das hat eine für C++ intuitivere Semantik als die echten Arrays.</p>
<p>P.S.: Du musst hier nichts kopieren. Eine <code>const</code> -Referenz würde genügen.</p>
<p>Und die Dimensionen eines lokal deklarierten Arrays über ein Makro zu definieren ist der Wahnsinn. Für sowas gibt es Templates:</p>
<pre><code>template&lt;std::size_t N1, std::size_t N2&gt;
void out(int feld(const&amp;)[N1][N2]) {
   // ....
}
</code></pre>
<p>Bzw. für ein verschachteltes <code>std::array</code></p>
<pre><code>template&lt;std::size_t N1, std::size_t N2&gt;
void out(std::array&lt;std::array&lt;int, N2&gt;, N1&gt; const&amp; arr) {
   // ....
}
</code></pre>
<p>Ungetestet!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314128</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 09 Apr 2013 14:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to Array an Funktion übergeben on Tue, 09 Apr 2013 14:23:06 GMT]]></title><description><![CDATA[<p>12345 schrieb:</p>
<blockquote>
<p>du übergibst automatisch die adresse. hier wird nicht kopiert.</p>
</blockquote>
<p>Doch, die Adresse, is immerhin call-by-value...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314130</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Tue, 09 Apr 2013 14:23:06 GMT</pubDate></item></channel></rss>