<?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[Statische Array von Zeigern außerhalb der Klasse initialisieren]]></title><description><![CDATA[<p>Ich hab ein Array von Zeigern in einer Klasse definiert:</p>
<pre><code class="language-cpp">class test {
    private:
        static int *zrg_arr[10];
    ...
};
</code></pre>
<p>Wie kann ich diese nun außerhalb der Klasse initialisieren, damit ich sie verwenden kann?</p>
<p>Praktisch irgendwas wie:</p>
<pre><code class="language-cpp">int test :: zrg_arr[0] = NULL;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/195448/statische-array-von-zeigern-außerhalb-der-klasse-initialisieren</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 22:43:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/195448.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 17 Oct 2007 18:26:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Statische Array von Zeigern außerhalb der Klasse initialisieren on Wed, 17 Oct 2007 18:26:30 GMT]]></title><description><![CDATA[<p>Ich hab ein Array von Zeigern in einer Klasse definiert:</p>
<pre><code class="language-cpp">class test {
    private:
        static int *zrg_arr[10];
    ...
};
</code></pre>
<p>Wie kann ich diese nun außerhalb der Klasse initialisieren, damit ich sie verwenden kann?</p>
<p>Praktisch irgendwas wie:</p>
<pre><code class="language-cpp">int test :: zrg_arr[0] = NULL;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1387394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387394</guid><dc:creator><![CDATA[Nimlot]]></dc:creator><pubDate>Wed, 17 Oct 2007 18:26:30 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Array von Zeigern außerhalb der Klasse initialisieren on Wed, 17 Oct 2007 18:31:58 GMT]]></title><description><![CDATA[<p>Wahrscheinlich so:</p>
<pre><code class="language-cpp">class test
{
    private:
        static int *zrg_arr[10];
    //...
};
</code></pre>
<pre><code class="language-cpp">int *test::zrg_arr[10] = {0,0,0,0,0,0,0,0,0,0};
</code></pre>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387400</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Wed, 17 Oct 2007 18:31:58 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Array von Zeigern außerhalb der Klasse initialisieren on Wed, 17 Oct 2007 18:40:43 GMT]]></title><description><![CDATA[<p>Geht das auch eleganter wenn es das Array z.B. einen größeren Index hat oder eine Konstante als Größe eingesetzt wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387409</guid><dc:creator><![CDATA[Nimlot]]></dc:creator><pubDate>Wed, 17 Oct 2007 18:40:43 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Array von Zeigern außerhalb der Klasse initialisieren on Wed, 17 Oct 2007 18:55:19 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">memset(zrg_arr, 0, 10*sizeof(int));
</code></pre>
<p>füllt das Array mit 0-Bytes</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387422</guid><dc:creator><![CDATA[crashterpiece]]></dc:creator><pubDate>Wed, 17 Oct 2007 18:55:19 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Array von Zeigern außerhalb der Klasse initialisieren on Wed, 17 Oct 2007 19:03:31 GMT]]></title><description><![CDATA[<p>crashterpiece schrieb:</p>
<blockquote>
<pre><code class="language-cpp">memset(zrg_arr, 0, 10*sizeof(int));
</code></pre>
<p>füllt das Array mit 0-Bytes</p>
</blockquote>
<p>furchtbar. falsch. undefiniert.</p>
<p>Wenn du Initialisierung mit 0 willst, ist nichts weiter zu tun:</p>
<pre><code class="language-cpp">int *test::zrg_arr[10];
</code></pre>
<p>Das Array wird ohnehin statisch zero-initialisiert.</p>
<p>Ein bißchen expliziter - und daher imo besser - ist ein expliziter Initialisierer:</p>
<pre><code class="language-cpp">int *test::zrg_arr[10] = {};
</code></pre>
<p>Das drückt aus, dass wir die Initialisierung nicht einfach vergessen haben - aber die Initialisierung mit 0 das richtige ist.</p>
<p>Eine Initialisierung mit etwas anderem als 0 kann nur über die erwähnte Initialisierungsliste erfolgen - oder man benutzt eine Funktion, um nur die Elemente, die von 0 verschieden sein sollen, zu ändern (das ist technisch gesehen allerdings keine Initialisierung).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387429</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 17 Oct 2007 19:03:31 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Array von Zeigern außerhalb der Klasse initialisieren on Wed, 17 Oct 2007 20:04:07 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>crashterpiece schrieb:</p>
<blockquote>
<pre><code class="language-cpp">memset(zrg_arr, 0, 10*sizeof(int));
</code></pre>
<p>füllt das Array mit 0-Bytes</p>
</blockquote>
<p>furchtbar. falsch. undefiniert.</p>
</blockquote>
<p>meinst du mit 'undefiniert' das fehlende '*'?</p>
<pre><code class="language-cpp">memset(zrg_arr, 0, 10*sizeof(int*));
</code></pre>
<p>furchtbar, aber nicht undefiniert. oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387459</guid><dc:creator><![CDATA[lemurenkönig]]></dc:creator><pubDate>Wed, 17 Oct 2007 20:04:07 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Array von Zeigern außerhalb der Klasse initialisieren on Wed, 17 Oct 2007 20:46:58 GMT]]></title><description><![CDATA[<p>lemurenkönig schrieb:</p>
<blockquote>
<p>camper schrieb:</p>
<blockquote>
<p>crashterpiece schrieb:</p>
<blockquote>
<pre><code class="language-cpp">memset(zrg_arr, 0, 10*sizeof(int));
</code></pre>
<p>füllt das Array mit 0-Bytes</p>
</blockquote>
<p>furchtbar. falsch. undefiniert.</p>
</blockquote>
<p>meinst du mit 'undefiniert' das fehlende '*'?</p>
<pre><code class="language-cpp">memset(zrg_arr, 0, 10*sizeof(int*));
</code></pre>
<p>furchtbar, aber nicht undefiniert. oder?</p>
</blockquote>
<p>undefiniert deshalb, weil die Repräsentation 0-pointer nicht zwingend aus 0-Bytes besteht. Falsch wegen dem fehlenden *. Furchtbar, weil solche size-Ausdrücke sich wo immer möglich auf das Objekt und nicht auf den Typen beziehen sollten - das ist sonst so etwas ähnliches wie eine magische Konstante; es muss immer mit der Variablendeklaration geändert werden. Also (ignorieren wir das im Standard undefinierte):</p>
<pre><code class="language-cpp">memset(zrg_arr,0,sizeof zrg_arr);
</code></pre>
<p>und schließlich gibt es dafür Algorithmen:</p>
<pre><code class="language-cpp">fill_n(zarg_arr,sizeof zarg_arr/sizeof *zarg_arr,0);
</code></pre>
<p>das ist dann nicht undefiniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387476</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 17 Oct 2007 20:46:58 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Array von Zeigern außerhalb der Klasse initialisieren on Wed, 17 Oct 2007 20:55:20 GMT]]></title><description><![CDATA[<p>ok, ein array aus zeigern würde ich so nicht initialisieren, da gehe ich lieber den weg über eine schleife</p>
<p>aber bei einem reinen integer-feld mach ich das grundsätzlich so :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387483</guid><dc:creator><![CDATA[crashterpiece]]></dc:creator><pubDate>Wed, 17 Oct 2007 20:55:20 GMT</pubDate></item></channel></rss>