<?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[mehrdimensionale Arrays als Parameter?]]></title><description><![CDATA[<p>Hi!</p>
<p>Hab inzwischen bissl rumgesucht und fast den Eindruck, als ob folgender Code in C++ gar nicht möglich ist:</p>
<pre><code>#include&lt;iostream&gt;
using namespace std;

int funktion(int);

int main()
{
  int array[20][20] = {0};
  int x = y = 5;

  funktion(array[x][y]);

  return 0;
}

int funtion(int test[a][b])
{
  int n = 0;

// links und rechts vom Feld
  if (test[a][b-1]) n = n++;
  if (test[a][b+1]) n = n++;

// Reihen über und unter dem Feld
  for (i=-1; i&lt;2; i++)
  {
	if (test[a-1][b+i]) n = n++;
	if (test[a+1][b+i]) n = n++;
  }

  return n;
}
</code></pre>
<p>Was die Funktion macht is jetzt gar nicht mal so wichtig. Was mich nur wundert ist, dass die Parameterübergabe (&quot;funktion(array[x][y])&quot;) nicht funktioniert. Hab ich da noch einen Syntaxfehler drin? Ich bekomm beim compilieren immer Fehlermeldungen im Stil von:</p>
<p>prog10.cpp(99) : error C2065: 'a' : nichtdeklarierter Bezeichner<br />
prog10.cpp(99) : error C2057: Konstanter Ausdruck erwartet<br />
prog10.cpp(99) : error C2466: Reservierung eines Feldes der konstanten Groesse 0 nicht moeglich<br />
prog10.cpp(99) : error C2065: 'b' : nichtdeklarierter Bezeichner<br />
prog10.cpp(99) : error C2057: Konstanter Ausdruck erwartet<br />
prog10.cpp(99) : error C2466: Reservierung eines Feldes der konstanten Groesse 0 nicht moeglich<br />
prog10.cpp(99) : error C2087: '&lt;unbekannt&gt;' : Feldindex fehlt</p>
<p>Aber das Feld hat ja gar nicht die &quot;konstante Größe 0&quot;, da ja beim Funktionsaufruf die zwei Integerwerte übergeben werden. Muss ich bei der Funktionsdeklaration etwa explizit die Feldgröße angeben?? Is mir grad beim schreiben gekommen, hab ich noch nicht ausprobiert. Was mach ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/127004/mehrdimensionale-arrays-als-parameter</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 23:10:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/127004.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 20 Nov 2005 16:08:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to mehrdimensionale Arrays als Parameter? on Sun, 20 Nov 2005 16:08:01 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Hab inzwischen bissl rumgesucht und fast den Eindruck, als ob folgender Code in C++ gar nicht möglich ist:</p>
<pre><code>#include&lt;iostream&gt;
using namespace std;

int funktion(int);

int main()
{
  int array[20][20] = {0};
  int x = y = 5;

  funktion(array[x][y]);

  return 0;
}

int funtion(int test[a][b])
{
  int n = 0;

// links und rechts vom Feld
  if (test[a][b-1]) n = n++;
  if (test[a][b+1]) n = n++;

// Reihen über und unter dem Feld
  for (i=-1; i&lt;2; i++)
  {
	if (test[a-1][b+i]) n = n++;
	if (test[a+1][b+i]) n = n++;
  }

  return n;
}
</code></pre>
<p>Was die Funktion macht is jetzt gar nicht mal so wichtig. Was mich nur wundert ist, dass die Parameterübergabe (&quot;funktion(array[x][y])&quot;) nicht funktioniert. Hab ich da noch einen Syntaxfehler drin? Ich bekomm beim compilieren immer Fehlermeldungen im Stil von:</p>
<p>prog10.cpp(99) : error C2065: 'a' : nichtdeklarierter Bezeichner<br />
prog10.cpp(99) : error C2057: Konstanter Ausdruck erwartet<br />
prog10.cpp(99) : error C2466: Reservierung eines Feldes der konstanten Groesse 0 nicht moeglich<br />
prog10.cpp(99) : error C2065: 'b' : nichtdeklarierter Bezeichner<br />
prog10.cpp(99) : error C2057: Konstanter Ausdruck erwartet<br />
prog10.cpp(99) : error C2466: Reservierung eines Feldes der konstanten Groesse 0 nicht moeglich<br />
prog10.cpp(99) : error C2087: '&lt;unbekannt&gt;' : Feldindex fehlt</p>
<p>Aber das Feld hat ja gar nicht die &quot;konstante Größe 0&quot;, da ja beim Funktionsaufruf die zwei Integerwerte übergeben werden. Muss ich bei der Funktionsdeklaration etwa explizit die Feldgröße angeben?? Is mir grad beim schreiben gekommen, hab ich noch nicht ausprobiert. Was mach ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/922380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/922380</guid><dc:creator><![CDATA[klaustaler]]></dc:creator><pubDate>Sun, 20 Nov 2005 16:08:01 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdimensionale Arrays als Parameter? on Sun, 20 Nov 2005 22:13:11 GMT]]></title><description><![CDATA[<p>die Grösse eines Arrays muss konstant sein.</p>
<p>z.B, ist das nicht möglich:</p>
<pre><code class="language-cpp">int a = 10;
int b[a];   // Fehler, da a nicht konstant !!
</code></pre>
<p>möglich wäre aber:</p>
<pre><code class="language-cpp">int b[10];
</code></pre>
<p>oder:</p>
<pre><code class="language-cpp">const int a=10;
int b[a];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/922832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/922832</guid><dc:creator><![CDATA[mound]]></dc:creator><pubDate>Sun, 20 Nov 2005 22:13:11 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdimensionale Arrays als Parameter? on Sun, 20 Nov 2005 22:22:35 GMT]]></title><description><![CDATA[<p>mir scheint, du weißt nicht ganz, was du willst: willst du einen einzelnen integer übergeben oder ein ganzes array?<br />
die deklaration von funktion sowie ihr aufruf in main lässt darauf schließen, dass du nur einen einzelnen int übergeben willst, also müsste deine funktionsdefinition ungefähr so lauten:</p>
<pre><code class="language-cpp">int funktion(int test)
{
//tue was mit test
}
</code></pre>
<p>andererseits brauchst du in funktion zugriff auf das gesamte array, was nicht zur ersten funktiondeklaration zusammenpasst (und zum aufruf in main).</p>
<p>was du in dem fall tun könntest wäre <em>unter anderem</em> folgendes</p>
<pre><code class="language-cpp">template &lt;int a, int b&gt;
void funktion (int (&amp;array)[a][b])
{
  //tue was mit dem array
}

int main ()
{
  int foo[20][20];
  funktion(foo);
}
</code></pre>
<p>was genau du mit deinem array tun möchtest und auf welche art du es brauchst (soll es doch dynamisch sein? soll funktion kein template sein? soll das originalarray unangetastet bleiben?) kann ich dir allerdings nicht sagen <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/922851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/922851</guid><dc:creator><![CDATA[davie]]></dc:creator><pubDate>Sun, 20 Nov 2005 22:22:35 GMT</pubDate></item></channel></rss>