<?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[Größe eines C-Arrays]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stell mich nun seit einiger Zeit die Frage, was volkard hier gemacht:</p>
<pre><code class="language-cpp">template&lt;typename T,size_t size&gt;
T* begin(T (&amp;arr)[size])
{
    return &amp;arr[0];
}

template&lt;typename T,size_t size&gt;
T* end(T (&amp;arr)[size])
{
    return &amp;arr[size];
}
</code></pre>
<p>(hieraus: <a href="http://www.c-plusplus.net/forum/p2053845#2053845" rel="nofollow">klick</a> )</p>
<p>Das mit dem zweiten Parameter, size, versteh ich nicht. Das wird doch nirgens angegeben, wie funktioniert das hier dann?</p>
<pre><code class="language-cpp">for ( int* it(begin(geldEinheiten)); it != end(geldEinheiten); ++it )
</code></pre>
<p>Wie funktioniert das, ich dachte immer man müsste die Größe des Arrays als Parameter angeben? Was genau passiert da? Kann das bitte jemand der Reihe nach erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/285951/größe-eines-c-arrays</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 21:36:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285951.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 30 Apr 2011 17:27:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Größe eines C-Arrays on Sat, 30 Apr 2011 17:27:22 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stell mich nun seit einiger Zeit die Frage, was volkard hier gemacht:</p>
<pre><code class="language-cpp">template&lt;typename T,size_t size&gt;
T* begin(T (&amp;arr)[size])
{
    return &amp;arr[0];
}

template&lt;typename T,size_t size&gt;
T* end(T (&amp;arr)[size])
{
    return &amp;arr[size];
}
</code></pre>
<p>(hieraus: <a href="http://www.c-plusplus.net/forum/p2053845#2053845" rel="nofollow">klick</a> )</p>
<p>Das mit dem zweiten Parameter, size, versteh ich nicht. Das wird doch nirgens angegeben, wie funktioniert das hier dann?</p>
<pre><code class="language-cpp">for ( int* it(begin(geldEinheiten)); it != end(geldEinheiten); ++it )
</code></pre>
<p>Wie funktioniert das, ich dachte immer man müsste die Größe des Arrays als Parameter angeben? Was genau passiert da? Kann das bitte jemand der Reihe nach erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056538</guid><dc:creator><![CDATA[Incocnito]]></dc:creator><pubDate>Sat, 30 Apr 2011 17:27:22 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines C-Arrays on Sat, 30 Apr 2011 17:33:11 GMT]]></title><description><![CDATA[<p>T wird auch nirgens wo angegeben. Zumindest muss man die Template-Parameter bei der Verwendung in diesem Fall nicht mit angeben. Dazu haben wir ja &quot;Template Argument Deduction&quot;. Der Compiler findet die Template-Parameter anhand des Funktionsarguments selbst raus.</p>
<pre><code class="language-cpp">template&lt;class T, int N&gt;
void foo(T (&amp;ref)[N]);

int main() {
  int arr[33];
  foo(arr);
}
</code></pre>
<p>ref ist eine Referenz auf ein N-elementiges Array mit Element-Typ T. Passenderweise ist arr ein int[33]. Daraus leitet der Compiler T=int und N=33 ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056540</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 30 Apr 2011 17:33:11 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines C-Arrays on Sat, 30 Apr 2011 17:36:00 GMT]]></title><description><![CDATA[<p>Der Trick dabei liegt in der Template-Instanzierung und der Tatsache, daß bei der Übergabe per Referenz auch die Array-Größe unterschieden wird. Das heißt, bei der Anwendung auf <code>int geldeinheiten[]={...};</code> kann der Compiler sowohl den Typ T=int als auch die Größe size des Arrays feststellen (und erzeugt für jede Array-Größe eine eigene Funktions-Spezialisierung).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056541</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 30 Apr 2011 17:36:00 GMT</pubDate></item></channel></rss>