<?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[char szPath[MAX_PATH+1] = {0} und memset(szPAth,0,MAX_PATH); Wo ist de Unterschied?]]></title><description><![CDATA[<p>Hallole mal wieder.</p>
<p>Der Titel sagt schon alles.</p>
<p>Ich habe in einem Code beispiel von Microsoft diese Zeile gefunden:</p>
<pre><code>char szPath[MAX_PATH+1] = {0}
</code></pre>
<p>Es wird also eine Variable Namens szPath mit 261 Zeichen (MAX_PATH=260) deklariert.<br />
Dann wird diese Variable mit {0} initialisiert.</p>
<p>ICh habe das so bisher noch nie gesehen und habe bisher immer</p>
<pre><code>memset(szPath,0,MAX_PATH)
</code></pre>
<p>angewendet.</p>
<p>Doch wo ist da der Unterschied?<br />
Ist das Beispiel von MS dasselbe oder was anderes?<br />
Und warum steht die 0 in Klammern?</p>
<p>Danke schonmal Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/197129/char-szpath-max_path-1-0-und-memset-szpath-0-max_path-wo-ist-de-unterschied</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 05:03:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/197129.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Nov 2007 09:27:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to char szPath[MAX_PATH+1] = {0} und memset(szPAth,0,MAX_PATH); Wo ist de Unterschied? on Wed, 07 Nov 2007 09:27:58 GMT]]></title><description><![CDATA[<p>Hallole mal wieder.</p>
<p>Der Titel sagt schon alles.</p>
<p>Ich habe in einem Code beispiel von Microsoft diese Zeile gefunden:</p>
<pre><code>char szPath[MAX_PATH+1] = {0}
</code></pre>
<p>Es wird also eine Variable Namens szPath mit 261 Zeichen (MAX_PATH=260) deklariert.<br />
Dann wird diese Variable mit {0} initialisiert.</p>
<p>ICh habe das so bisher noch nie gesehen und habe bisher immer</p>
<pre><code>memset(szPath,0,MAX_PATH)
</code></pre>
<p>angewendet.</p>
<p>Doch wo ist da der Unterschied?<br />
Ist das Beispiel von MS dasselbe oder was anderes?<br />
Und warum steht die 0 in Klammern?</p>
<p>Danke schonmal Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398951</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Wed, 07 Nov 2007 09:27:58 GMT</pubDate></item><item><title><![CDATA[Reply to char szPath[MAX_PATH+1] = {0} und memset(szPAth,0,MAX_PATH); Wo ist de Unterschied? on Wed, 07 Nov 2007 09:34:54 GMT]]></title><description><![CDATA[<p>Du definierst hier ein Array von Zeichen. Arrays kann man in C(++) mit einer Liste von Elementen initialisieren. Diese Liste wird in geschweifte Klammern eingeschlossen, deshalb die Klammern <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>
<p>Grundsätzlich gilt: <strong>Wenn</strong> ein Initialisierer angegeben ist, werden alle überschüssigen Elemente default-initialisiert (d.h. mit 0). In C++ dürfte man sogar alle Elemente auslassen, um eine vollständige Default-Initialisierung zu erreichen. Beispiel:</p>
<pre><code class="language-cpp">char a1[10] = { 'h', 'i' }; // Im Array steht jetzt &quot;hi\0\0\0\0\0\0\0\0&quot;
char a2[10] = {}; // Im Array stehen nur Nullen
char a3[10]; // Im Array stehen zufällige Werte, wenn dies ein automatisches Array ist
</code></pre>
<p>Ältere Compiler könnten diese Regel allerdings missachten.</p>
<p>Fazit: Bei ausreichend aktuellem Compiler wäre</p>
<pre><code class="language-cpp">char array[length] = {};
</code></pre>
<p>vom Ergebnis her identisch zu</p>
<pre><code class="language-cpp">char array[length];
memset(array, 0, length);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1398955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398955</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 07 Nov 2007 09:34:54 GMT</pubDate></item><item><title><![CDATA[Reply to char szPath[MAX_PATH+1] = {0} und memset(szPAth,0,MAX_PATH); Wo ist de Unterschied? on Wed, 07 Nov 2007 09:36:30 GMT]]></title><description><![CDATA[<p>EDIT: Hat sich erledigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398957</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 07 Nov 2007 09:36:30 GMT</pubDate></item><item><title><![CDATA[Reply to char szPath[MAX_PATH+1] = {0} und memset(szPAth,0,MAX_PATH); Wo ist de Unterschied? on Wed, 07 Nov 2007 09:52:01 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Aufklärung!</p>
<p>An sowas habe ich noch gar nicht gedacht:-)<br />
Dann kann ich mir also in Zukunft das memset sparen und ={0} schreiben?</p>
<p>Das bedeutet also konkret:<br />
Mit dem einen Zeichen {0} initialisiere ich das ERSTE Zeichen und C++ setzt automatisch die restlichen auf \0. Sonst müsste ich ja lt.obigem Beispiel ={0,0,0,0.....bis 261} also 261x 0 schreiben.</p>
<p>Habe ich das so richtig verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398967</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Wed, 07 Nov 2007 09:52:01 GMT</pubDate></item><item><title><![CDATA[Reply to char szPath[MAX_PATH+1] = {0} und memset(szPAth,0,MAX_PATH); Wo ist de Unterschied? on Wed, 07 Nov 2007 10:07:47 GMT]]></title><description><![CDATA[<p>Es wird mit so vielen Zeichen initialisiert wie angegeben sind. Fehlende Zeichen werden durch per Standardkonstruktor (oder 0 bei PODs) ergänzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398978</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 07 Nov 2007 10:07:47 GMT</pubDate></item><item><title><![CDATA[Reply to char szPath[MAX_PATH+1] = {0} und memset(szPAth,0,MAX_PATH); Wo ist de Unterschied? on Fri, 09 Nov 2007 13:13:35 GMT]]></title><description><![CDATA[<p>Alles klar.<br />
Vielen Dank allen.</p>
<p>Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400296</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Fri, 09 Nov 2007 13:13:35 GMT</pubDate></item></channel></rss>