<?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[Verständnisfragen zu C-Strings bzw char&#x2F;const char]]></title><description><![CDATA[<p>Hey Leute,<br />
ich stehe grad irgendwie voll auf dem Schlauch und verstehe ein paar kleine Sachen im Bezug auf c-Strings bzw char und const char auf einmal nicht so ganz.<br />
Hier mal die Schnippsel die ich meine, ich hoffe ihr könnt mir dass vll kurz verständlich erklären, mal ne Zeit lang nix mehr damit gemacht und schon raff ichs net mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<pre><code class="language-cpp">int main()
{
    char b = &quot;P&quot;; // geht nicht, da &quot;p&quot; const char ist und nicht char
    const char a = &quot;p&quot;; // geht nicht, &quot;P&quot; ist ja const char[2]
    const char aa = 'p'; // geht
    char* c = &quot;Hallo&quot;;  // c zeigt auf die Adresse im Heap wo &quot;Hallo/0&quot; steht, allerdings zeigt der Zeiger nun auf ein const char[]
    *c = 'l'; // nicht gut, stürzt ab, weil c zeigt ja auf ein konstanten Stringliteral der nicht geändert werden soll daher macht man ja
    const char* d = &quot;Hallo&quot;;
    *d = 'l'; // geht nicht weil const
    // jetzt dass was ich nicht so ganz verstehe
    *c = &quot;l&quot;; // warum geht das nicht...???, also warum kompiliert es nicht, klar wenns kompilieren würde würde es abstürzen weil er den konstanten Stringliteral ändern würde
}
</code></pre>
<p>Schonmal vielen Dank für Eure Hilfe</p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284291/verständnisfragen-zu-c-strings-bzw-char-const-char</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 04:32:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284291.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Mar 2011 13:28:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 13:28:12 GMT]]></title><description><![CDATA[<p>Hey Leute,<br />
ich stehe grad irgendwie voll auf dem Schlauch und verstehe ein paar kleine Sachen im Bezug auf c-Strings bzw char und const char auf einmal nicht so ganz.<br />
Hier mal die Schnippsel die ich meine, ich hoffe ihr könnt mir dass vll kurz verständlich erklären, mal ne Zeit lang nix mehr damit gemacht und schon raff ichs net mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<pre><code class="language-cpp">int main()
{
    char b = &quot;P&quot;; // geht nicht, da &quot;p&quot; const char ist und nicht char
    const char a = &quot;p&quot;; // geht nicht, &quot;P&quot; ist ja const char[2]
    const char aa = 'p'; // geht
    char* c = &quot;Hallo&quot;;  // c zeigt auf die Adresse im Heap wo &quot;Hallo/0&quot; steht, allerdings zeigt der Zeiger nun auf ein const char[]
    *c = 'l'; // nicht gut, stürzt ab, weil c zeigt ja auf ein konstanten Stringliteral der nicht geändert werden soll daher macht man ja
    const char* d = &quot;Hallo&quot;;
    *d = 'l'; // geht nicht weil const
    // jetzt dass was ich nicht so ganz verstehe
    *c = &quot;l&quot;; // warum geht das nicht...???, also warum kompiliert es nicht, klar wenns kompilieren würde würde es abstürzen weil er den konstanten Stringliteral ändern würde
}
</code></pre>
<p>Schonmal vielen Dank für Eure Hilfe</p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041838</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 29 Mar 2011 13:28:12 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 13:33:39 GMT]]></title><description><![CDATA[<p>Zeile 11 kann nicht kompilieren, weil *c eine Referenz auf einen einzelnen char liefert. &quot;l&quot; ist aber ein const char*, also eine Zeichenkette.</p>
<p><em>Geht Z.7 echt nicht? Ich dachte, wenn man das so schreibt, wird automatisch Speicher für den char[] reserviert, den man auch ändern kann. Aber da bin ich nicht Mal ansatzsweise sicher.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041843</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 29 Mar 2011 13:33:39 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 13:39:27 GMT]]></title><description><![CDATA[<p>Hey vielen Dank für die Antwort, ja stimmt ist ja eigentlich logisch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /><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>Ne da stürzt des Programm ab, er warnt mich in Zeile 6, dass &quot;Hallo&quot; nicht zu char* konvertiert werden kann und in Zeile 7 stürzt das Programm dann ab( also wenn der Rest der einen Fehler bringt natürlich nicht dabei ist)</p>
<p>Vielen Dank</p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041848</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 29 Mar 2011 13:39:27 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 13:42:02 GMT]]></title><description><![CDATA[<p>Ok.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041851</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 29 Mar 2011 13:42:02 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 13:43:32 GMT]]></title><description><![CDATA[<p>Zeile 3 geht nicht weil &quot;P&quot; const char * ist. 'P' wäre const char und das ginge.<br />
Zeile 4 dasselbe, char ist etwas anderes als char *.<br />
Zeile 6: Der Zeiger zeigt eben NICHT auf ein char [], sondern irgendwo in den Speicher.<br />
Zeile 7: Und genau deshalb geht das hier nicht, würde c auf ein char[] zeigen, ginge das nämlich.<br />
Beispiel:<br />
char text[] = &quot;Hallo&quot;;<br />
char *c = text;<br />
<em>c = '1';<br />
geht!<br />
Zeile 11: Erstens siehe zu Zeile 4: char != char</em>, zweitens siehe zu Zeile 6, c zeigt auf ein Stringliteral, das ist implizit konstant und was anderes als ein Array char[].</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041852</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 29 Mar 2011 13:43:32 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 13:46:42 GMT]]></title><description><![CDATA[<p>Also wird bei char x[] = &quot;blub&quot; wird Speicher reserviert, der auch verändert werden darf, bei const char x[] = &quot;blub&quot; ist das auch so, aber man darf nix verändern. Bei const char x* = &quot;blub&quot; wird das ausnahmsweise genau so wie const char x[] = &quot;blub&quot; verstanden, aber bei char x* = &quot;blub&quot; nicht mehr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041855</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 29 Mar 2011 13:46:42 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 13:58:43 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char *x = &quot;Blub&quot;;
</code></pre>
<p>Es ist einfach ein Zeiger auf ein Stringliteral, welches fest im Programm verankert ist und in einem Bereich abgelegt wird, der nicht beschreibbar ist.</p>
<p>Folglich führt jeder Schreibzugriff darauf zum Absturz des Programms bzw. zu undefiniertem Verhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041861</guid><dc:creator><![CDATA[jkljkl]]></dc:creator><pubDate>Tue, 29 Mar 2011 13:58:43 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 14:10:50 GMT]]></title><description><![CDATA[<p>Ja, aber bei char a[] = &quot;Blub&quot; ist es mit dem Literal ja dasselbe, aber anscheinend erzeugt die initiale Zuweisung dann ja den Speicher dafür. Nagut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041864</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 29 Mar 2011 14:10:50 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 14:22:02 GMT]]></title><description><![CDATA[<p>Nein, es ist eben nicht das gleiche. Denn char * ist ein Zeiger, während char [] ein Array ist. Und jetzt sag nicht, das ein Zeiger ein Array ist. Das ist nämlich nicht richtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041873</guid><dc:creator><![CDATA[jkljkl]]></dc:creator><pubDate>Tue, 29 Mar 2011 14:22:02 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 14:27:20 GMT]]></title><description><![CDATA[<p>Ich habe ja auch geschrieben, dass das String-Literal, also &quot;Blub&quot;, dasselbe ist. Was daraus gemacht wird, ist was anderes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041877</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 29 Mar 2011 14:27:20 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 14:27:33 GMT]]></title><description><![CDATA[<p>jkljkl schrieb:</p>
<blockquote>
<p>Nein, es ist eben nicht das gleiche. Denn char * ist ein Zeiger, während char [] ein Array ist. Und jetzt sag nicht, das ein Zeiger ein Array ist. Das ist nämlich nicht richtig.</p>
</blockquote>
<p>Eisflamme schrieb:</p>
<blockquote>
<p>&quot;l&quot; ist aber ein const char*, also eine Zeichenkette.</p>
</blockquote>
<p>Ich denke hier liegt das Verständnisproblem. &quot;l&quot; ist nämlich vom Typ const char[] und eben nicht const char*.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041878</guid><dc:creator><![CDATA[inter2k3]]></dc:creator><pubDate>Tue, 29 Mar 2011 14:27:33 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 14:32:35 GMT]]></title><description><![CDATA[<p>Oh.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041881</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 29 Mar 2011 14:32:35 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 14:53:53 GMT]]></title><description><![CDATA[<p>Ich glaube &quot;I&quot; ist ein Stringliteral und deshalb vom Typ const char *, wie auch schon in den anderen Beiträgen in diesem Thread erklärt, liegen Stringliterale in einem besonderen Speicherbereich.<br />
Wie gesagt:<br />
c = &quot;I&quot; würde ja gehen. Das Problem ist einfach, dass an dieser Stelle *c für ein char steht, und &quot;I&quot; für ein char*.</p>
<p>Ich muss mich korrigieren, c = &quot;I&quot; würde wahrscheinlich nur dann gehen, wenn c vom Typ const char* wäre, hier ist es aber vom Typ char* - also liegen hier genau genommen zwei Probleme vor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041889</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 29 Mar 2011 14:53:53 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 15:07:12 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>...wie auch schon in den anderen Beiträgen in diesem Thread erklärt, liegen Stringliterale in einem besonderen Speicherbereich.</p>
</blockquote>
<p>Bestreite ich nicht.</p>
<p>Belli schrieb:</p>
<blockquote>
<p>Wie gesagt:<br />
c = &quot;I&quot; würde ja gehen.</p>
</blockquote>
<p>Stichwort: array-to-pointer decay</p>
<p>Du kannst ja auch sowas schreiben:</p>
<pre><code class="language-cpp">int values[10];
int* pvalues = values;
</code></pre>
<p>Nachtrag:<br />
Es gab einen sehr langen thread zu dem ganzen char Zeugs - und krümelkacker hat einen informativen Beitrag dort geschrieben - vielleicht hilft das ja weiter:<br />
<a href="http://www.c-plusplus.net/forum/278764-10" rel="nofollow">Das verwirrende char in C/C++</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041893</guid><dc:creator><![CDATA[inter2k3]]></dc:creator><pubDate>Tue, 29 Mar 2011 15:07:12 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 15:06:46 GMT]]></title><description><![CDATA[<p>Wunderbar, Eisflamme aber schrieb, dass *c = &quot;I&quot; nicht geht, weil *c die Dereferenzierung ein char - Pointers ist, mithin ein char, und &quot;I&quot; eine Zeichenkette repräsentiert, wobei es für das Problem hier egal ist, ob const char[] oder const char*.<br />
Dein</p>
<p>inter2k3 schrieb:</p>
<blockquote>
<p>Eisflamme schrieb:</p>
<blockquote>
<p>&quot;l&quot; ist aber ein const char*, also eine Zeichenkette.</p>
</blockquote>
<p>Ich denke hier liegt das Verständnisproblem. &quot;l&quot; ist nämlich vom Typ const char[] und eben nicht const char*.</p>
</blockquote>
<p>machte den Eindruck, als wenn Du anderer Meinung seist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041898</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 29 Mar 2011 15:06:46 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 15:09:22 GMT]]></title><description><![CDATA[<p>inter2k3 schrieb:</p>
<blockquote>
<p>Du kannst ja auch sowas schreiben:</p>
<pre><code class="language-cpp">int values[10];
int* pvalues = values;
</code></pre>
</blockquote>
<p>Das ist ja auch was anderes. Hier ging es NICHT um</p>
<p>char *c = &quot;I&quot;;</p>
<p>sondern um:</p>
<p>char *c;<br />
*c = &quot;I&quot;;</p>
<p>und das ist ein Unterschied.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041899</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 29 Mar 2011 15:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 15:16:55 GMT]]></title><description><![CDATA[<p>Ich denke es sollte klar sein, dass das nicht funktioniert. Dabei spielt es auch überhaupt keine Rolle ob ursprünglich angenommen wurde, dass ein Zeichenkettenliteral vom Typ const char* ist, oder ob es tatsächlich eben vom Typ const char[] ist. Weder das eine noch das andere könnte man einem char zuweisen.</p>
<p>Ich wollte lediglich klarstellen, welchen Typ ein Zeichenkettenliteral hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041906</guid><dc:creator><![CDATA[inter2k3]]></dc:creator><pubDate>Tue, 29 Mar 2011 15:16:55 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 15:38:30 GMT]]></title><description><![CDATA[<p>Ok.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2041916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2041916</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 29 Mar 2011 15:38:30 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 20:05:23 GMT]]></title><description><![CDATA[<p>So erstmal vielen Dank für die Antworten, jetzt is mir das eg schon ziehmlich klar, les mir aber auch mal noch den anderen Thread durch.<br />
Allerdings bin ich bei einer Sache der Meinung sie wäre falsch:<br />
'l' ist doch vom typ char und nicht const char oder nicht?</p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2042057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042057</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 29 Mar 2011 20:05:23 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Tue, 29 Mar 2011 20:29:37 GMT]]></title><description><![CDATA[<p>fr33g schrieb:</p>
<blockquote>
<p>'l' ist doch vom typ char und nicht const char oder nicht?</p>
</blockquote>
<p>Ja. Bei Literalen macht es keinen Sinn, von CV-Qualifizierern zu sprechen, da sie keine eigentlichen Speicherbereiche belegen müssen und nicht adressierbar sind. Skalaren RValues kannst du ohnehin nichts zuweisen.</p>
<p>Stringliterale wie <code>&quot;hallo&quot;</code> sind ein Spezialfall, wobei auch diese als Arrays nicht konstant sein können (im Gegensatz zu ihren Elementen). Die einzelnen Zeichen besitzen jedoch eine Adresse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2042078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042078</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 29 Mar 2011 20:29:37 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu C-Strings bzw char&#x2F;const char on Wed, 30 Mar 2011 05:02:04 GMT]]></title><description><![CDATA[<p>Also an alle vielen lieben Dank. Jetzt versteh ich das alles auch wieder richtig und bin nicht mehr so verwirrt wie davor;-)</p>
<p>Danke, Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2042115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042115</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Wed, 30 Mar 2011 05:02:04 GMT</pubDate></item></channel></rss>