<?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[Problem mit Matrix]]></title><description><![CDATA[<p>Hallo, wie kann ich einer Funktion eine Matrix mit beliebiger Größer übergeben?</p>
<p>Fehlermeldungen:</p>
<p>[C++ Fehler] Unit1.cpp(4): E2453 Größe des Typs 'int[]' unbekannt oder Null<br />
[C++ Fehler] Unit1.cpp(17): E2313 Konstantenausdruck erforderlich<br />
[C++ Fehler] Unit1.cpp(17): E2313 Konstantenausdruck erforderlich<br />
[C++ Fehler] Unit1.cpp(25): E2453 Größe des Typs 'int[]' unbekannt oder Null<br />
[C++ Fehler] Unit1.cpp(27): E2453 Größe des Typs 'int[]' unbekannt oder Null</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void mat ( int matrix[] [] );

int main()
{
int zeilen;
int spalten;

cout&lt;&lt;&quot;Matrix Zeilen Anzahl &quot;;
cin&gt;&gt;zeilen;

cout&lt;&lt;&quot;Matrix Spalten Anzahl: &quot;;
cin&gt;&gt;spalten;

int matrix[ zeilen ][ spalten];

mat ( matrix );

return 0;
}

void mat ( int matrix[][] )
{
 matrix[0][0]=1;
}
</code></pre>
<p>Wenn ich die Größen vorher festlege dann funktioniert alles:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void mat ( int matrix[2] [2] );

int main()
{
const zeilen=2;
const spalten=2;

int matrix[ zeilen ][ spalten];

mat ( matrix );

system(&quot;PAUSE&quot;);
return 0;
}

void mat ( int matrix[2][2] )
{
 matrix[0][0]=1;
}
</code></pre>
<p>Oder kann man das nicht dynamisch machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/298617/problem-mit-matrix</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 20:17:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/298617.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Jan 2012 12:39:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Matrix on Tue, 24 Jan 2012 12:39:48 GMT]]></title><description><![CDATA[<p>Hallo, wie kann ich einer Funktion eine Matrix mit beliebiger Größer übergeben?</p>
<p>Fehlermeldungen:</p>
<p>[C++ Fehler] Unit1.cpp(4): E2453 Größe des Typs 'int[]' unbekannt oder Null<br />
[C++ Fehler] Unit1.cpp(17): E2313 Konstantenausdruck erforderlich<br />
[C++ Fehler] Unit1.cpp(17): E2313 Konstantenausdruck erforderlich<br />
[C++ Fehler] Unit1.cpp(25): E2453 Größe des Typs 'int[]' unbekannt oder Null<br />
[C++ Fehler] Unit1.cpp(27): E2453 Größe des Typs 'int[]' unbekannt oder Null</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void mat ( int matrix[] [] );

int main()
{
int zeilen;
int spalten;

cout&lt;&lt;&quot;Matrix Zeilen Anzahl &quot;;
cin&gt;&gt;zeilen;

cout&lt;&lt;&quot;Matrix Spalten Anzahl: &quot;;
cin&gt;&gt;spalten;

int matrix[ zeilen ][ spalten];

mat ( matrix );

return 0;
}

void mat ( int matrix[][] )
{
 matrix[0][0]=1;
}
</code></pre>
<p>Wenn ich die Größen vorher festlege dann funktioniert alles:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void mat ( int matrix[2] [2] );

int main()
{
const zeilen=2;
const spalten=2;

int matrix[ zeilen ][ spalten];

mat ( matrix );

system(&quot;PAUSE&quot;);
return 0;
}

void mat ( int matrix[2][2] )
{
 matrix[0][0]=1;
}
</code></pre>
<p>Oder kann man das nicht dynamisch machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171844</guid><dc:creator><![CDATA[m_a_t]]></dc:creator><pubDate>Tue, 24 Jan 2012 12:39:48 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Matrix on Tue, 24 Jan 2012 12:48:54 GMT]]></title><description><![CDATA[<p>Garnicht. Für bessere Lösungen guckst du hier <a href="http://www.c-plusplus.net/forum/298454" rel="nofollow">Dynamische Matrix</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171852</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 24 Jan 2012 12:48:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Matrix on Tue, 24 Jan 2012 12:50:37 GMT]]></title><description><![CDATA[<p>m_a_t schrieb:</p>
<blockquote>
<p>Oder kann man das nicht dynamisch machen?</p>
</blockquote>
<p>Nein. Zumindest nicht so. Die Funktion kann nicht wissen, was sie später übergeben bekommt und das Array trägt keine Größeninformation über sich selbst. Daher kann der Compiler in der Funktion keinen korrekten Code erzeugen, wenn er ausrechnen soll, an welcher Stelle ein Element relativ zur Anfangsposition des Arrays ist.</p>
<p>Alternativen:</p>
<ul>
<li>Eine Lösung über Doppelzeiger. Sehr C-ig und sehr frickelig.</li>
<li>Eine Lösung mit verschachtelten std::vector-en. Dies kann mehr als die Lösung die du derzeit anstrebst und ist daher ein bisschen langsamer.</li>
<li>Nimm ein eindimensionales Array/Vector und rechne den Index selber aus. Eine gute Lösung, aber etwas umkonfortabel</li>
<li>Die obige Lösung, mit einem Komfortwrapper drum. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></li>
<li>Mach die Größe der inneren Dimension einen Templateparameter. Mit std::array lässt sich dass sogar einigermaßen lecker hinschreiben.</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/2171853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171853</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 24 Jan 2012 12:50:37 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Matrix on Tue, 24 Jan 2012 12:59:48 GMT]]></title><description><![CDATA[<p>Da man extrem selten wirklich dynamische Matrizen braucht, hier die einfache Lösung mit Templates, die SeppJ erwähnt hat (ohne std::array):</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

template&lt;size_t n, size_t m, typename c&gt;
void test(c (&amp;mat_)[n][m])
{
    cout &lt;&lt; typeid(mat_).name() &lt;&lt; endl;
}

int main() 
{
    double m[4][3];
    test(m); // Gibt hier double[4][3] aus.
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2171860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171860</guid><dc:creator><![CDATA[*rant*]]></dc:creator><pubDate>Tue, 24 Jan 2012 12:59:48 GMT</pubDate></item></channel></rss>