<?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 char* und char *const &amp;amp;&amp;amp; allgemeine Fragen zu Zeigern]]></title><description><![CDATA[<p>Hi!<br />
Ich versteh den Unterschied nicht ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Wenn man die Adresse einer Variablen an <code>const char*</code> zuweist, kann kein neuer Wert an den Zeiger zugewiesen werden. Aber bei <code>char *const</code> geht das ohne Probleme. Wozu ist <code>char *const</code> dann jetzt gut? <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>Nebenfrage: Wofuer sind Zeiger denn jetzt sinnvoll? In meinem Buch wird erwaehnt, dass Zeiger unverzichtbar fuer C++ waeren... aber es wird nicht erwaehnt wofuer!? Ist eine Referenz nicht das gleiche?</p>
<pre><code class="language-cpp">char&amp; Referenz = einZeichen;
</code></pre>
<pre><code class="language-cpp">char *ZeigerAufZeichen = &amp;einZeichen;
</code></pre>
<p>Hier sehe ich keinen Unterschied...</p>
<p>Sorry fuer die peinliche Anfaengerfrage, aber ich komm einfach nicht drauf.</p>
<p>Gruss<br />
Cartman, der bis jetzt noch nie mit Zeigern zu tun hatte</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233457/const-char-und-char-const-amp-amp-allgemeine-fragen-zu-zeigern</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 22:40:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233457.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Feb 2009 21:20:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const char* und char *const &amp;amp;&amp;amp; allgemeine Fragen zu Zeigern on Wed, 04 Feb 2009 21:20:13 GMT]]></title><description><![CDATA[<p>Hi!<br />
Ich versteh den Unterschied nicht ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Wenn man die Adresse einer Variablen an <code>const char*</code> zuweist, kann kein neuer Wert an den Zeiger zugewiesen werden. Aber bei <code>char *const</code> geht das ohne Probleme. Wozu ist <code>char *const</code> dann jetzt gut? <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>Nebenfrage: Wofuer sind Zeiger denn jetzt sinnvoll? In meinem Buch wird erwaehnt, dass Zeiger unverzichtbar fuer C++ waeren... aber es wird nicht erwaehnt wofuer!? Ist eine Referenz nicht das gleiche?</p>
<pre><code class="language-cpp">char&amp; Referenz = einZeichen;
</code></pre>
<pre><code class="language-cpp">char *ZeigerAufZeichen = &amp;einZeichen;
</code></pre>
<p>Hier sehe ich keinen Unterschied...</p>
<p>Sorry fuer die peinliche Anfaengerfrage, aber ich komm einfach nicht drauf.</p>
<p>Gruss<br />
Cartman, der bis jetzt noch nie mit Zeigern zu tun hatte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658171</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Wed, 04 Feb 2009 21:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to const char* und char *const &amp;amp;&amp;amp; allgemeine Fragen zu Zeigern on Wed, 04 Feb 2009 21:27:28 GMT]]></title><description><![CDATA[<p>Das <code>const</code> bezieht sich - wenn man es konsequent macht - auf das, was links davon steht.</p>
<pre><code class="language-cpp">const char* Ptr;  // meiner Ansicht nach schöner ;)
char const* Ptr;  // wirklich konsequent
</code></pre>
<p>Der Zeiger selber ist nicht konstant, der referenzierte <code>char</code> aber schon.</p>
<pre><code class="language-cpp">char* const Ptr;
</code></pre>
<p>Der Zeiger ist konstant, der <code>char</code> aber nicht.</p>
<pre><code class="language-cpp">char const* const Ptr;
</code></pre>
<p>Konstanter Zeiger auf konstanten <code>char</code> .</p>
<p>Referenzen verhalten sich im Grunde genommen wie eingeschränkte Zeiger. Man muss sie bei der Definition mit einem gültigen Objekt (nicht Null) initialisieren und sie können nicht verändert werden, verweisen also während ihrer Lebensdauer auf das selbe Objekt. Zudem ist die Syntax ein wenig einfacher, da Referenzen beim Zugriff automatisch dereferenziert werden. An vielen Orten sind Referenzen praktisch und teilweise sicherer, aber für gewisse Dinge (Speicherverwaltung z.B., oder Verweise auf Objekte, die ungültig sein können oder sich verändern) muss man Zeiger nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658175</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 04 Feb 2009 21:27:28 GMT</pubDate></item><item><title><![CDATA[Reply to const char* und char *const &amp;amp;&amp;amp; allgemeine Fragen zu Zeigern on Wed, 04 Feb 2009 21:30:43 GMT]]></title><description><![CDATA[<p>Wenn du mal ganz intensiv hier im Forum suchst, wirst du auf scheinbar unendliche Diskussionen stossen, die sich mit Zeiger/Referenzen befassen.</p>
<p>Ich sage jetzt mit Absicht nichts dazu. <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/1658179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658179</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 04 Feb 2009 21:30:43 GMT</pubDate></item><item><title><![CDATA[Reply to const char* und char *const &amp;amp;&amp;amp; allgemeine Fragen zu Zeigern on Wed, 04 Feb 2009 21:32:43 GMT]]></title><description><![CDATA[<p>Warum schaut eigentlich niemand die Artikel an? Die scheinen richtig unbekannt zu sein...</p>
<p><a href="http://magazin.c-plusplus.net/artikel/Pointer%20in%20C%28PlusPlus%29" rel="nofollow">-&gt; Link zu Artikel über Zeiger</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658181</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 04 Feb 2009 21:32:43 GMT</pubDate></item><item><title><![CDATA[Reply to const char* und char *const &amp;amp;&amp;amp; allgemeine Fragen zu Zeigern on Wed, 04 Feb 2009 22:02:57 GMT]]></title><description><![CDATA[<p>Danke fuer eure Antworten!</p>
<p>Okay, zugegeben, hab vergessen zu suchen, bevor ich ein neuen Thread eroeffne. Ich entschuldige mich, eigentlich achte ich darauf <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="😉"
    /><br />
Zum Thema const char* und char* const:<br />
Sehe ich das jetzt richtig, dass const char* ein Zeiger auf ein konstantes char ist und der Wert der Variable (auf die der Zeiger zeigt) nicht durch den Zeiger veraendert werden kann, aber sehr wohl die Adresse (sodass der Zeiger dann auf ein anderes Zeichen zeigt)?</p>
<pre><code class="language-cpp">const char* ZeigerAufZeichen = &amp;einZeichen;

	ZeigerAufZeichen = &amp;zeich2;
</code></pre>
<p>Wenn das Sternchen weggelassen wird, dann weist man dem Zeiger eine neue Adresse zu. Richtig? Trotzdem etwas verwirrend...</p>
<p>Bei char* const habe ich einen konstanten Zeiger auf ein char. Somit kann die Adresse nicht mehr veraendert werden, weil der Zeiger konstant ist - aber der Wert der Variablen, worauf der Zeiger zeigt schon:</p>
<pre><code class="language-cpp">char* const ZeigerAufZeichen = &amp;einZeichen;

	*ZeigerAufZeichen = 'o';
</code></pre>
<p>Ich denke mal das habe ich alles richtig verstanden.<br />
char const* const ist jetzt wohl ein Konstanter Zeiger auf ein konstantes Zeichen. Hier laesst sich weder die Adresse noch der Wert der Variablen, worauf der Zeiger zeigt aendern.</p>
<p>Nur wie sieht es in der Praxis aus? Wann braucht man Zeiger und wann nicht? Wann sind Referenzen sinnvoller? Ich habe schon haeufig mit Referenzen gearbeitet und sehe jetzt nicht wirklich einen Sinn Zeiger zu benutzen.</p>
<p>Und vor allem verstehe ich nicht wofuer Zeiger gut sind die auf <code>void</code> zeigen. Damit kann man doch nichts anfangen - kein Wert zuweisen usw. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Thx fuer den Link. Der Artikel ist sehr interessant. Den werde ich mir gleich mal durchlesen. Ich hoffe, dann wird einiges klarer....</p>
<p>Danke nochmal fuer eure Hilfe <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>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658191</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Wed, 04 Feb 2009 22:02:57 GMT</pubDate></item><item><title><![CDATA[Reply to const char* und char *const &amp;amp;&amp;amp; allgemeine Fragen zu Zeigern on Wed, 04 Feb 2009 22:13:06 GMT]]></title><description><![CDATA[<blockquote>
<p>Nur wie sieht es in der Praxis aus? Wann braucht man Zeiger und wann nicht? Wann sind Referenzen sinnvoller? Ich habe schon haeufig mit Referenzen gearbeitet und sehe jetzt nicht wirklich einen Sinn Zeiger zu benutzen.</p>
</blockquote>
<p>Wie gesagt. Das ist nicht so eindeutig und Punkt langer Diskussionen. Wenn du einmal ein paar pro/kontra hören willst, dann gib dich doch bitte auf die Suche. Das hatten wir hier mehr, als einmal..</p>
<p>Die Meinungen gehen auseinander und es gibt kein &quot;richtig&quot; oder &quot;falsch&quot;.. Alles hat Vor/Nachteile. Die abwägen muss jeder für sich selber.</p>
<p>EDIT:<br />
1. <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-227477-and-start-is-30-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-227477-and-start-is-30-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-.html</a></p>
<p>2. <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-231254-and-postdays-is-0-and-postorder-is-asc-and-start-is-0.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-231254-and-postdays-is-0-and-postorder-is-asc-and-start-is-0.html</a></p>
<p>Da gibt es sicher noch mehr, aber das waren die, die ich so auf die schnelle gefunden habe.. Und da sollten deine Fragen auch beantwortet werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658196</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 04 Feb 2009 22:13:06 GMT</pubDate></item><item><title><![CDATA[Reply to const char* und char *const &amp;amp;&amp;amp; allgemeine Fragen zu Zeigern on Wed, 04 Feb 2009 22:52:06 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="🙂"
    /><br />
Jetzt ist mir einiges klarer geworden.</p>
<p>Es gibt nur noch eine Sache, die ich nicht verstehe. Welche spezielle Bedeutung hat der Inkrementierungsoperator fuer Zeiger?</p>
<pre><code class="language-cpp">int zahl = 5;
	int* ptr = &amp;zahl;

	*ptr+=1; // zahl wird zu 6
</code></pre>
<pre><code class="language-cpp">int zahl = 5;
	int* ptr = &amp;zahl;

	*ptr++; // etwas nicht verstaendliches passiert
</code></pre>
<p>Dazu habe ich nichts gefunden <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>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658213</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Wed, 04 Feb 2009 22:52:06 GMT</pubDate></item><item><title><![CDATA[Reply to const char* und char *const &amp;amp;&amp;amp; allgemeine Fragen zu Zeigern on Wed, 04 Feb 2009 23:23:17 GMT]]></title><description><![CDATA[<p>Eric Cartman schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int zahl = 5;
    int* ptr = &amp;zahl;

    *ptr++; // etwas nicht verstaendliches passiert
</code></pre>
</blockquote>
<p><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>
<p>in der operatorenpriorität steht ++ vor *, hilfreich ist da <a href="http://de.wikibooks.org/wiki/C%2B%2B-Programmierung:_Liste_der_Operatoren_nach_Priorit%C3%A4t" rel="nofollow">Dieser Link</a></p>
<p>das ganze inkrementiert den zeiger (der zeigt dann auf den wert, der im speicher<br />
hinter der 5 steht), gibt dann den alten zeiger zurück (verhalten von ++) und<br />
dereferenziert diesen dann. da man mit dem wert nix macht, kann der stern weg.</p>
<p>zu zeiger vs. referenzen (hab die links nicht durchgelesen)</p>
<p>da du eine referenz nicht umsetzen kannst, kannst du keine datenstrukturen<br />
aufbauen oder durchwandern. z.b. zeichenketten:</p>
<p>wenn du nicht die stringklasse nimmst, kannst du nur schwer von einem zeichen<br />
zum anderen wandern. mit zeigern muss man einfach nur +1 rechnen um den<br />
nächsten buchstaben zu bekommen. guck dir mal &lt;cstdio&gt; an, alle funktionen<br />
mit &quot;str&quot; am anfang arbeiten mit zeigern.</p>
<pre><code class="language-cpp">int main()
{
    const char *text = &quot;Hallo!&quot;; // zeigt auf 'H', der rest steht dahinter im speicher
    const char *p = 0; // zeigt auf nix

    p = text; // beide zeiger zeigen auf den selben string
    while (*p != 'l') // solange der INHALT (nicht wert) von p ungleich 'l' ist.
        ++p; // oder auch p++; // wird p auf den nächsten buchstaben gesetzt

    char x = *p; // x ist deshalb jetzt 'l'

    p = &amp;x; // jetzt zeigt p auf unsere variable x, die den wert 'l' hat

    // *p ist deshalb 'l'

    *p = *text; // inhalt von text ('H') in den inhalt von p kopieren.

    // weil p auf x zeigt, ist x jetzt 'H'
}
</code></pre>
<p>void * zeiger werden in C++ eigenlich selten genutzt. entweder zum speichermanagemant<br />
oder wenn z.b. eine funktion einer anderen funktion ein benuterdefinierten<br />
wert übergeben soll, wobei die funktion natürlich nicht weiß, welchen wert.<br />
(z.b. CreateThread)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658219</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Wed, 04 Feb 2009 23:23:17 GMT</pubDate></item></channel></rss>