<?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[const von String Literalen [ seltsamer Standard ]]]></title><description><![CDATA[<p>Hi,</p>
<p>wieso funktioniert folgendes und kein Compiler der Welt meckert :</p>
<pre><code class="language-cpp">char *string = &quot;Hallo&quot;;
</code></pre>
<p>&quot;Hallo&quot; ist ein Stringliteral, folgedessen vom Typ const char*. Doch wie kann ich einem nichtkonstanten char Zeiger einen Konstanten zuweisen.<br />
Zudem ist laut Standard das modifizieren von Stringliteralen undefiniert, was ich aber hier ungehindert machen kann.</p>
<p>Das tolle ist, das folgender Code &quot;eigentlich&quot; äquivalent zu dem Oberen ist und das richtige Verhalten aufweist:</p>
<pre><code class="language-cpp">const char *temp = &quot;Hallo&quot;;
char *string = temp;           // Error, all ok
</code></pre>
<p>Hat der Standard hier was vermurckst oder übersehe ich etwas?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/218128/const-von-string-literalen-seltsamer-standard</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 15:40:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/218128.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Jul 2008 12:48:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const von String Literalen [ seltsamer Standard ] on Wed, 16 Jul 2008 12:48:51 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wieso funktioniert folgendes und kein Compiler der Welt meckert :</p>
<pre><code class="language-cpp">char *string = &quot;Hallo&quot;;
</code></pre>
<p>&quot;Hallo&quot; ist ein Stringliteral, folgedessen vom Typ const char*. Doch wie kann ich einem nichtkonstanten char Zeiger einen Konstanten zuweisen.<br />
Zudem ist laut Standard das modifizieren von Stringliteralen undefiniert, was ich aber hier ungehindert machen kann.</p>
<p>Das tolle ist, das folgender Code &quot;eigentlich&quot; äquivalent zu dem Oberen ist und das richtige Verhalten aufweist:</p>
<pre><code class="language-cpp">const char *temp = &quot;Hallo&quot;;
char *string = temp;           // Error, all ok
</code></pre>
<p>Hat der Standard hier was vermurckst oder übersehe ich etwas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548222</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 16 Jul 2008 12:48:51 GMT</pubDate></item><item><title><![CDATA[Reply to const von String Literalen [ seltsamer Standard ] on Wed, 16 Jul 2008 12:52:14 GMT]]></title><description><![CDATA[<p>Stellt sich mir aber die Frage, warum das hier auch geht:</p>
<pre><code class="language-cpp">int i = 0;
</code></pre>
<p>0 ist auch konstant. trotzdem muß i nicht konstant sein. Wird wohl das gleiche sein. Sonst könnte man ja nie im Sourcecode Werte zuweisen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548226</guid><dc:creator><![CDATA[Ureg]]></dc:creator><pubDate>Wed, 16 Jul 2008 12:52:14 GMT</pubDate></item><item><title><![CDATA[Reply to const von String Literalen [ seltsamer Standard ] on Wed, 16 Jul 2008 13:01:12 GMT]]></title><description><![CDATA[<p>@Ureg:<br />
Im ersten Fall wird ein konstanter Zeiger in eine nicht-konstante Variable kopiert, im zweiten Fall wird ein konstantes Integral in eine nicht-konstante Variable kopiert. Ist also vom direkten Typ her das gleiche.</p>
<p>Das hat allerdings nichts mit der Frage zu tun, denn dort ging es um das, was in der ersten Indirektion passiert, denn dort wird ein konstanter Zeiger auf konstante Daten in eine nicht-konstante Variable vom Typ &quot;Zeiger auf nicht-konstante Daten&quot; kopiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548241</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:01:12 GMT</pubDate></item><item><title><![CDATA[Reply to const von String Literalen [ seltsamer Standard ] on Wed, 16 Jul 2008 13:07:14 GMT]]></title><description><![CDATA[<p>Auch wenn 0 da konstant ist, wird der Wert 0 in i kopiert und ist somit dann modifizierbar.</p>
<p>Schließlich ist das auch vollkommen legal:</p>
<pre><code class="language-cpp">const int a = 4;
int b = a;
</code></pre>
<p>Hmmm, dann würde aber immer ganz schön viel kopiert werden, aber der Compiler optimiert das vermutlich weg.<br />
So ganz gefällt mir diese Theorie aber auch nicht und je mehr ich darüber nachdenke, umso konfuser wirds <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Vielleicht meldet sich ja std::camper gleich zu Wort <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548249</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:07:14 GMT</pubDate></item><item><title><![CDATA[Reply to const von String Literalen [ seltsamer Standard ] on Wed, 16 Jul 2008 13:14:02 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Vielleicht meldet sich ja std::camper gleich zu Wort <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Hat er schon:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1499275.html#1499275" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-p-is-1499275.html#1499275</a><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>EDIT:<br />
Auf der ersten Seite des Threads steht noch was von &quot;deprecated compatibility feature&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548258</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:14:02 GMT</pubDate></item><item><title><![CDATA[Reply to const von String Literalen [ seltsamer Standard ] on Wed, 16 Jul 2008 13:21:54 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>KasF schrieb:</p>
<blockquote>
<p>Vielleicht meldet sich ja std::camper gleich zu Wort <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Hat er schon:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1499275.html#1499275" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-p-is-1499275.html#1499275</a><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>EDIT:<br />
Auf der ersten Seite des Threads steht noch was von &quot;deprecated compatibility feature&quot;.</p>
</blockquote>
<p>Danke für den Link. Also ist dies einfach so um die Kompatibilität zu C zu wahren.<br />
Das würde aber doch heißen, dass dies in C funktioniert und legal ist und String Literale in C nicht vom Typ const char* sind, oder wie ist dies zu verstehen ?</p>
<p>[ Aber wir benutzen ja ehe alle std::string <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1548268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548268</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:21:54 GMT</pubDate></item><item><title><![CDATA[Reply to const von String Literalen [ seltsamer Standard ] on Wed, 16 Jul 2008 14:07:49 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>KasF schrieb:</p>
<blockquote>
<p>Vielleicht meldet sich ja std::camper gleich zu Wort <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Hat er schon:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1499275.html#1499275" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-p-is-1499275.html#1499275</a><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>EDIT:<br />
Auf der ersten Seite des Threads steht noch was von &quot;deprecated compatibility feature&quot;.</p>
</blockquote>
<p>Danke für den Link. Also ist dies einfach so um die Kompatibilität zu C zu wahren.<br />
Das würde aber doch heißen, dass dies in C funktioniert und legal ist und String Literale in C nicht vom Typ const char* sind, oder wie ist dies zu verstehen ?</p>
<p>[ Aber wir benutzen ja ehe alle std::string <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>
</blockquote>
<p>Vor Urzeiten gab es noch const und auch kein const char*. Zeichenkettenkonstanten durften allerdings noch nie modifiziert werden. Man möchte aber gerne, dass uralter PDP-Code weiterhin funktionieren soll (wird er nat. nicht tun, schon des anderen Stils bzgl. Funktionsdeklarationen wegen nicht, aber das kann man, im Gegensatz zu der const Problem, durch automatisierte Tools leicht beheben).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548313</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 16 Jul 2008 14:07:49 GMT</pubDate></item><item><title><![CDATA[Reply to const von String Literalen [ seltsamer Standard ] on Wed, 16 Jul 2008 20:17:22 GMT]]></title><description><![CDATA[<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548502</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 16 Jul 2008 20:17:22 GMT</pubDate></item></channel></rss>