<?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[Mehrdimensionales Array an Funktion übergeben]]></title><description><![CDATA[<p>Moin moin,</p>
<p>ich möchte die Werte eines mehrdimensionalen Arrays an eine Funktion übergeben (call by value), die wiederum einzelne Werte des Arrays an eine andere Funktion übergibt. Das Ganze soll in etwa so laufen:</p>
<pre><code class="language-cpp">float array[3][3];
void funktion1(float array[]);
void funktion2(float wert);

void funktion1(float array[])
{
   for(int i=0; i&lt;3; i++)
   {
      for(int j=0; j&lt;3; j++)
      {
          funktion2(array[i][j]);
      }
   }
}
</code></pre>
<p>Der Code ist so natürlich falsch. Ich habe schon versucht die Funktion mit &quot;void funktion1(float array[][3])&quot; zu deklarieren, weil eine Dimension fest ist. Daraufhin sind nicht alle Werte an funktion2 übermittelt worden.</p>
<p>Hoffe mir kann jemand helfen!</p>
<p>Danke schonmal und Gruß,<br />
Nico</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/246149/mehrdimensionales-array-an-funktion-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 07:43:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/246149.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 23 Jul 2009 16:37:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrdimensionales Array an Funktion übergeben on Thu, 23 Jul 2009 16:37:14 GMT]]></title><description><![CDATA[<p>Moin moin,</p>
<p>ich möchte die Werte eines mehrdimensionalen Arrays an eine Funktion übergeben (call by value), die wiederum einzelne Werte des Arrays an eine andere Funktion übergibt. Das Ganze soll in etwa so laufen:</p>
<pre><code class="language-cpp">float array[3][3];
void funktion1(float array[]);
void funktion2(float wert);

void funktion1(float array[])
{
   for(int i=0; i&lt;3; i++)
   {
      for(int j=0; j&lt;3; j++)
      {
          funktion2(array[i][j]);
      }
   }
}
</code></pre>
<p>Der Code ist so natürlich falsch. Ich habe schon versucht die Funktion mit &quot;void funktion1(float array[][3])&quot; zu deklarieren, weil eine Dimension fest ist. Daraufhin sind nicht alle Werte an funktion2 übermittelt worden.</p>
<p>Hoffe mir kann jemand helfen!</p>
<p>Danke schonmal und Gruß,<br />
Nico</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1748395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748395</guid><dc:creator><![CDATA[Baumschubser]]></dc:creator><pubDate>Thu, 23 Jul 2009 16:37:14 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array an Funktion übergeben on Thu, 23 Jul 2009 17:01:24 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void funktion1(float **array)
</code></pre>
<p>Aber wie du daran schon siehst, machst du dich mit mehrdimensionalen Arrays nicht glücklich. Nimm lieber eindimensionale und tu einfach so als seien sie mehrdimensional. Der Compiler macht das nämlich intern auch so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1748404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748404</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 23 Jul 2009 17:01:24 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array an Funktion übergeben on Thu, 23 Jul 2009 17:09:08 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a><br />
1. Er will call-by-value<br />
2. Wie funktioniert das mit den Dimensionen bei deinem Vorschlag?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1748412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748412</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Thu, 23 Jul 2009 17:09:08 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array an Funktion übergeben on Thu, 23 Jul 2009 17:16:26 GMT]]></title><description><![CDATA[<p>Baumschubser schrieb:</p>
<blockquote>
<p>ich möchte die Werte eines mehrdimensionalen Arrays an eine Funktion übergeben (call by value)</p>
</blockquote>
<p>Call by value ist mit Arrays nicht möglich.</p>
<p>Nimm aber einen Array-Wrapper wie <code>std::tr1::array</code> (und wenn du keine TR1-Unterstützung hast, <code>boost::array</code> ), dann kannst du Arrays wie ganz normale Klasseninstanzen behandeln.</p>
<pre><code class="language-cpp">#include &lt;array&gt;

// Verschachteltes Array
typedef std::tr1::array&lt;std::tr1::array&lt;float, 3&gt;, 3&gt; FloatMultiArray;

void Function1(FloatMultiArray a);        // call by value
void Function2(const FloatMultiArray&amp; a); // call by reference

int main()
{
    FloatMultiArray Array = {{1,2,3}, {4,5,6}, {7,8,9}}; // Initialisierungsliste
    Function1(Array);
    Function2(Array);
}
</code></pre>
<p>Oder bilde die zwei Dimensionen auf eine ab. Du kannst auch <code>std::vector</code> verwenden, dann hast du einfach dynamische Speicherverwaltung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1748416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748416</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 23 Jul 2009 17:16:26 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array an Funktion übergeben on Thu, 23 Jul 2009 17:43:22 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a><br />
Ein zweidimensionales Array ist kein Doppelzeiger..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1748435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748435</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 23 Jul 2009 17:43:22 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array an Funktion übergeben on Thu, 23 Jul 2009 17:50:11 GMT]]></title><description><![CDATA[<p>edit: Hier stand Quatsch, den ich jetzt nicht korrigieren möchte. Nexus hat genügend bessere Alternativen zu mehrdimensionalen Arrays genannt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1748437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748437</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 23 Jul 2009 17:50:11 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array an Funktion übergeben on Thu, 23 Jul 2009 18:13:59 GMT]]></title><description><![CDATA[<p>Woher hast du denn diese Weisheiten? So ist das nicht!</p>
<pre><code class="language-cpp">int A[5][5];
// Die Speicherzellen sind nicht gleich!
	cout &lt;&lt; (&amp;A[3][0] == &amp;A[0][1]) &lt;&lt; endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1748450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748450</guid><dc:creator><![CDATA[staun0r]]></dc:creator><pubDate>Thu, 23 Jul 2009 18:13:59 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array an Funktion übergeben on Thu, 23 Jul 2009 20:15:26 GMT]]></title><description><![CDATA[<p>staun0r schrieb:</p>
<blockquote>
<p>Woher hast du denn diese Weisheiten? So ist das nicht!</p>
<pre><code class="language-cpp">int A[5][5];
// Die Speicherzellen sind nicht gleich!
	cout &lt;&lt; (&amp;A[3][0] == &amp;A[0][1]) &lt;&lt; endl;
</code></pre>
</blockquote>
<p>Bei A[2][5] schon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1748503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748503</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 23 Jul 2009 20:15:26 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array an Funktion übergeben on Thu, 23 Jul 2009 20:18:40 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Bei A[2][5] schon.</p>
</blockquote>
<p>A[2][5] ist RAM Dschungel, undefiniert. Aber das weisst du bestimmt selbst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1748505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748505</guid><dc:creator><![CDATA[defin0r]]></dc:creator><pubDate>Thu, 23 Jul 2009 20:18:40 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array an Funktion übergeben on Thu, 23 Jul 2009 21:52:45 GMT]]></title><description><![CDATA[<p>Baumschubser schrieb:</p>
<blockquote>
<pre><code class="language-cpp">float array[3][3];
void funktion1(float array[]);
void funktion2(float wert);

void funktion1(float array[])
{
   for(int i=0; i&lt;3; i++)
   {
      for(int j=0; j&lt;3; j++)
      {
          funktion2(array[i][j]);
      }
   }
}
</code></pre>
<p>Der Code ist so natürlich falsch.</p>
</blockquote>
<pre><code class="language-cpp">float array[3][3];
void funktion1(float (*array)[3]);
void funktion2(float wert);
void funktion2(float wert)
{}
void funktion1(float(*array)[3])
{
   for(int i=0; i&lt;3; i++)
   {
      for(int j=0; j&lt;3; j++)
      {
          funktion2(array[i][j]);
      }
   }
}  

int main()
{

	funktion1(array); //!
	return 0;
}
</code></pre>
<p><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/1748561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748561</guid><dc:creator><![CDATA[Basistechnik]]></dc:creator><pubDate>Thu, 23 Jul 2009 21:52:45 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array an Funktion übergeben on Thu, 23 Jul 2009 22:01:56 GMT]]></title><description><![CDATA[<p>defin0r schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Bei A[2][5] schon.</p>
</blockquote>
<p>A[2][5] ist RAM Dschungel, undefiniert. Aber das weisst du bestimmt selbst.</p>
</blockquote>
<p>Verstehst du mich eigentlich absichtlich falsch?</p>
<pre><code class="language-cpp">float A[2][5];
assert(&amp;A[3][0] == &amp;A[0][1]);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1748563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748563</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 23 Jul 2009 22:01:56 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array an Funktion übergeben on Thu, 23 Jul 2009 23:47:37 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Verstehst du mich eigentlich absichtlich falsch?</p>
</blockquote>
<p>Nö, warum sollte ich.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">float A[2][5];
assert(&amp;A[3][0] == &amp;A[0][1]);
</code></pre>
</blockquote>
<p>Hätte ja gern 'knapp daneben ist auch vorbei' geschreiben, aber das ist ja weit gefehlt!<br />
Du meinst wohl sowas:</p>
<pre><code class="language-cpp">char A[2][5]; 
	cout &lt;&lt; (&amp;A[0][5] == &amp;A[1][0]);
</code></pre>
<p><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/1748590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748590</guid><dc:creator><![CDATA[versteh0r]]></dc:creator><pubDate>Thu, 23 Jul 2009 23:47:37 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array an Funktion übergeben on Fri, 24 Jul 2009 00:56:53 GMT]]></title><description><![CDATA[<p>@Baumschubser: Wenn du die Arraygröße nicht in der Parameterliste festbrennen willst wie hier: void funktion float(*array)[3]), sondern etwas mehr Flexibilität benötigst, dann guckst du hier:</p>
<pre><code class="language-cpp">const int X = 5, Y = 4;
int U = 5, V = 4;
void f2 ( float a )
{}

void f1 ( float* B )
{
	for ( int y = 0; y &lt; Y; y++ )
		for ( int x = 0; x &lt; X; x++ )
			f2 (B[y*X+x]);
// X,Y  müssen hier nicht mehr const sein!
for ( int y = 0; y &lt; V; y++ )
		for ( int x = 0; x &lt; U; x++ )
			f2 (B[y*U+x]);
}

int main()
{	

	float A[Y][X] = {0};
	A[2][1] = 88.88;
	f1 ( ( float* )&amp;A );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1748595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748595</guid><dc:creator><![CDATA[freier paramet0r]]></dc:creator><pubDate>Fri, 24 Jul 2009 00:56:53 GMT</pubDate></item></channel></rss>