<?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[Länge char*-Array -- NULL-Test ausserhalb Array-Grenzen valides C++ ?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ein Char*-Array wie folgt initialisert:</p>
<pre><code class="language-cpp">char * arr[] = { &quot;eins&quot;, &quot;zwei&quot;, &quot;drei&quot; };
</code></pre>
<p>Wie bekommt man die Anzahl der Elemente (3) heraus ?</p>
<p>Als Behelfslösung hab ich gefunden:</p>
<pre><code class="language-cpp">for(arrsize=0; arrsize[i] != NULL; ++arrsize);
</code></pre>
<p>Mal abgesehen von der Frage, ob es keine bessere Lösung zur<br />
Ermittlung der Elementeanzahl eines solchen char*-Arrays gibt,<br />
wäre die zweite Frage, ob der Nulltest ausserhalb Array-Grenzen</p>
<pre><code class="language-cpp">arr[greaterArrayLength] != NULL
</code></pre>
<p>eigentlich valider C++-Code ist und überall läuft.</p>
<p>Danke und Gruß<br />
Tomax</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/285090/länge-char-array-null-test-ausserhalb-array-grenzen-valides-c</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 12:19:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285090.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Apr 2011 19:27:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Länge char*-Array -- NULL-Test ausserhalb Array-Grenzen valides C++ ? on Wed, 13 Apr 2011 19:27:29 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ein Char*-Array wie folgt initialisert:</p>
<pre><code class="language-cpp">char * arr[] = { &quot;eins&quot;, &quot;zwei&quot;, &quot;drei&quot; };
</code></pre>
<p>Wie bekommt man die Anzahl der Elemente (3) heraus ?</p>
<p>Als Behelfslösung hab ich gefunden:</p>
<pre><code class="language-cpp">for(arrsize=0; arrsize[i] != NULL; ++arrsize);
</code></pre>
<p>Mal abgesehen von der Frage, ob es keine bessere Lösung zur<br />
Ermittlung der Elementeanzahl eines solchen char*-Arrays gibt,<br />
wäre die zweite Frage, ob der Nulltest ausserhalb Array-Grenzen</p>
<pre><code class="language-cpp">arr[greaterArrayLength] != NULL
</code></pre>
<p>eigentlich valider C++-Code ist und überall läuft.</p>
<p>Danke und Gruß<br />
Tomax</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048969</guid><dc:creator><![CDATA[tomax]]></dc:creator><pubDate>Wed, 13 Apr 2011 19:27:29 GMT</pubDate></item><item><title><![CDATA[Reply to Länge char*-Array -- NULL-Test ausserhalb Array-Grenzen valides C++ ? on Wed, 13 Apr 2011 19:29:05 GMT]]></title><description><![CDATA[<p>Benutze std::vector<a href="std::string" rel="nofollow">std::string</a> oder meinetwegen eine array Implementierung (boost::array oder std::tr1::array)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048972</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 13 Apr 2011 19:29:05 GMT</pubDate></item><item><title><![CDATA[Reply to Länge char*-Array -- NULL-Test ausserhalb Array-Grenzen valides C++ ? on Wed, 13 Apr 2011 19:30:49 GMT]]></title><description><![CDATA[<p>An der Stelle, wo du das Array direkt in der Hand hast, kannst du mit sizeof die Größe ermitteln: <code>int arrsize = sizeof(arr)/sizeof(arr[0]);</code> . Das funktioniert allerdings nicht mehr, wenn du nur noch einen Zeiger auf den Array-Anfang in der Hand hältst (z.B. weil du dieses Array als Parameter übergeben bekommen hast).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048975</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 13 Apr 2011 19:30:49 GMT</pubDate></item><item><title><![CDATA[Reply to Länge char*-Array -- NULL-Test ausserhalb Array-Grenzen valides C++ ? on Wed, 13 Apr 2011 20:48:35 GMT]]></title><description><![CDATA[<p>danke für die Tips.</p>
<p>Aber trotzdem würde mich noch interessieren, ob</p>
<pre><code class="language-cpp">arr[greaterArrayLength] != NULL
</code></pre>
<p>valider C++-Code ist oder das Ergebnis<br />
davon abhängt, was zufällig an Stelle sowieso<br />
im Speicher steht.<br />
Weiss das jemand ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2049025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2049025</guid><dc:creator><![CDATA[tomax]]></dc:creator><pubDate>Wed, 13 Apr 2011 20:48:35 GMT</pubDate></item><item><title><![CDATA[Reply to Länge char*-Array -- NULL-Test ausserhalb Array-Grenzen valides C++ ? on Wed, 13 Apr 2011 20:55:40 GMT]]></title><description><![CDATA[<p>Nein, das ist kein valider Code - deine Variablen liegen relativ dicht hintereinander auf dem Stack (die genaue Anordnung dürfte vom Compiler abhängen) und wenn du versuchst, über die Array-Grenzen hinaus zu lesen (oder gar zu schreiben), hantierst du mit dem Inhalt der benachbarten Variablen.<br />
(Wenn du weit genug gehst, kannst du sogar die interne Programmstruktur zerstören, indem du die Rücksprungadresse der aktuellen Funktion überschreibst)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2049030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2049030</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 13 Apr 2011 20:55:40 GMT</pubDate></item><item><title><![CDATA[Reply to Länge char*-Array -- NULL-Test ausserhalb Array-Grenzen valides C++ ? on Wed, 13 Apr 2011 21:02:24 GMT]]></title><description><![CDATA[<p>tomax schrieb:</p>
<blockquote>
<p>ein Char*-Array wie folgt initialisert:</p>
<pre><code class="language-cpp">char * arr[] = { &quot;eins&quot;, &quot;zwei&quot;, &quot;drei&quot; };
</code></pre>
<p>Wie bekommt man die Anzahl der Elemente (3) heraus ?</p>
</blockquote>
<pre><code>sizeof(arr)/sizeof(arr[0])
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2049036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2049036</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 13 Apr 2011 21:02:24 GMT</pubDate></item><item><title><![CDATA[Reply to Länge char*-Array -- NULL-Test ausserhalb Array-Grenzen valides C++ ? on Wed, 13 Apr 2011 21:23:04 GMT]]></title><description><![CDATA[<p>Für den Elementtyp des Arrays würde ich ausserdem <code>const char*</code> statt <code>char*</code> nehmen, damit verhinderst du nämlich undefinierten Schreibzugriff auf die Stringliterale.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2049050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2049050</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 13 Apr 2011 21:23:04 GMT</pubDate></item><item><title><![CDATA[Reply to Länge char*-Array -- NULL-Test ausserhalb Array-Grenzen valides C++ ? on Thu, 14 Apr 2011 00:49:40 GMT]]></title><description><![CDATA[<p>Statt</p>
<pre><code class="language-cpp">sizeof(arr) / sizeof(arr[0]);
</code></pre>
<p>halte ich</p>
<pre><code class="language-cpp">template&lt;typename T, std::size_t N&gt;
std::size_t array_size(T(&amp;)[N]) { return N; }

// und dann später

array_size(arr);
</code></pre>
<p>für sinnvoller. Auf die Art beschwert sich der Compiler, wenn man einen Zeiger statt eines Arrays hineinstopft.</p>
<p>Ansonsten kann ich theta und Nexus nur zustimmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2049085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2049085</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 14 Apr 2011 00:49:40 GMT</pubDate></item><item><title><![CDATA[Reply to Länge char*-Array -- NULL-Test ausserhalb Array-Grenzen valides C++ ? on Thu, 14 Apr 2011 06:39:12 GMT]]></title><description><![CDATA[<p>In C ist es gängige Praxis, das so zu schreiben</p>
<pre><code class="language-cpp">char * arr[] = { &quot;eins&quot;, &quot;zwei&quot;, &quot;drei&quot; , NULL };
</code></pre>
<p>Dann funktioniert der Test. In C++ würde ich aber auch vector&lt;string&gt; nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2049107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2049107</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 14 Apr 2011 06:39:12 GMT</pubDate></item><item><title><![CDATA[Reply to Länge char*-Array -- NULL-Test ausserhalb Array-Grenzen valides C++ ? on Thu, 14 Apr 2011 18:03:41 GMT]]></title><description><![CDATA[<p>glaub, mir ist geholfen. Thx für die Antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2049538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2049538</guid><dc:creator><![CDATA[tomax]]></dc:creator><pubDate>Thu, 14 Apr 2011 18:03:41 GMT</pubDate></item></channel></rss>