<?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 und char*]]></title><description><![CDATA[<p>Der Typ &quot;char&quot; kann ja nur ein Zeichen speichern:</p>
<p>char test = 'C';</p>
<p>Warum kann dann ein char-Zeiger mehrere Zeichen speichern?</p>
<p>char* test = &quot;Haha&quot;;</p>
<p>Hmm, worauf Zeigt test nun eigentlich? test ist ja kein Vektor, daher wird nicht auf &quot;H&quot;, also 1. Stelle gezeigt oder?</p>
<p>Das verwirrt..</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/142483/char-und-char</link><generator>RSS for Node</generator><lastBuildDate>Tue, 01 Sep 2026 20:09:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/142483.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Mar 2006 20:58:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to char und char* on Thu, 30 Mar 2006 20:58:47 GMT]]></title><description><![CDATA[<p>Der Typ &quot;char&quot; kann ja nur ein Zeichen speichern:</p>
<p>char test = 'C';</p>
<p>Warum kann dann ein char-Zeiger mehrere Zeichen speichern?</p>
<p>char* test = &quot;Haha&quot;;</p>
<p>Hmm, worauf Zeigt test nun eigentlich? test ist ja kein Vektor, daher wird nicht auf &quot;H&quot;, also 1. Stelle gezeigt oder?</p>
<p>Das verwirrt..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1027537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027537</guid><dc:creator><![CDATA[Verwirrter]]></dc:creator><pubDate>Thu, 30 Mar 2006 20:58:47 GMT</pubDate></item><item><title><![CDATA[Reply to char und char* on Thu, 30 Mar 2006 21:02:01 GMT]]></title><description><![CDATA[<p>Verwirrter schrieb:</p>
<blockquote>
<p>Hmm, worauf Zeigt test nun eigentlich? test ist ja kein Vektor, daher wird nicht auf &quot;H&quot;, also 1. Stelle gezeigt oder?</p>
</blockquote>
<p>Auch wenn's wirklich kein Vektor (was meinst du damit überhaupt?) ist, er zeigt tatsächlich nur auf's &quot;H&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1027541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027541</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Thu, 30 Mar 2006 21:02:01 GMT</pubDate></item><item><title><![CDATA[Reply to char und char* on Thu, 30 Mar 2006 21:05:30 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char name[4] = &quot;Haha&quot;;
</code></pre>
<p>Das meine ich mit Vektor.<br />
Nun ist &quot;name&quot; ein Zeiger auf das 1. Element.</p>
<p>Aber warum wird hier alles ausgegeben?</p>
<pre><code class="language-cpp">char* test = &quot;Haha&quot;; 
    cout &lt;&lt; test;
</code></pre>
<p><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>Warum kann ein Zeiger mehrere Zeichen speichern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1027543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027543</guid><dc:creator><![CDATA[Verwirrter]]></dc:creator><pubDate>Thu, 30 Mar 2006 21:05:30 GMT</pubDate></item><item><title><![CDATA[Reply to char und char* on Thu, 30 Mar 2006 21:46:17 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>char * ist ein Sonderfall.<br />
Nicht umsonst ist das als Null-Terminierter C-String bezeihnet.<br />
Denn mit deiner Anweisung</p>
<pre><code class="language-cpp">char* test = &quot;Haha&quot;;
</code></pre>
<p>erzeugst du effektiv diese Zeichenkette <em>&quot;Haha\0&quot;</em>. Deshalb must du bei dynamischer Char-Erstellung auch immer ein SPeicherplatz mehr reservieren als du Nutzzeichen brauichst... für das abschließende '\0'.<br />
Das ist das Terminierungszeichen. String-Funktionen lesen C_Strings immer bis zum abschließenden Terminierungszeichen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1027567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027567</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 30 Mar 2006 21:46:17 GMT</pubDate></item><item><title><![CDATA[Reply to char und char* on Thu, 30 Mar 2006 22:12:48 GMT]]></title><description><![CDATA[<p>Ja das weiß ich schon, ich dachte nur, char kann immer nur EIN Zeichen speichern.</p>
<p>Denn ich hatte mir gerade Zeigervektoren angesehen, da wunderte es mich als ich das sah:</p>
<p>char* error[] = { &quot;Ungültig&quot;, &quot;Fehler 1: &quot;, &quot;Fehler 2: &quot; };</p>
<p>Das wären dann ja mehrere char-Zeiger, und ich dachte die können ja nur 1 Zeichen speichern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1027568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027568</guid><dc:creator><![CDATA[Nicht mehr so verwirrt]]></dc:creator><pubDate>Thu, 30 Mar 2006 22:12:48 GMT</pubDate></item><item><title><![CDATA[Reply to char und char* on Thu, 30 Mar 2006 22:23:43 GMT]]></title><description><![CDATA[<p>Ja, char kann nur 1 Zeichen speichern. char* ist ein Zeiger (auf char) und Zeiger enthalten bekanntlicherweise Adressen. Also zeigt dein char-Zeiger auf den Anfang der Adresse, wo der String &quot;Haha&quot; hinterlegt ist (also auf das 'H'). Da in char-Arrays nicht die Anzahl der Zeichen gespeichert ist, muss es eine Endekennung für eine Zeichenfolge geben und das ist die Null ('\0').</p>
<p>Was mir beim verstehen von Zeigern gut geholfen hat, war Assembler. Das hat mir persönlich einiges erleichtert beim Umgang und beim Verstehen von Zeigern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1027572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027572</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Thu, 30 Mar 2006 22:23:43 GMT</pubDate></item><item><title><![CDATA[Reply to char und char* on Thu, 30 Mar 2006 23:00:10 GMT]]></title><description><![CDATA[<p>Aha..</p>
<p>Assembler möchte ich vorerst nicht lernen.</p>
<p>Aber du kannst mir Zeiger ruhig genau erklären, aber ich wüsste nicht was man mehr wissen muss als:</p>
<p>-Zeiger sind ein eigenes Objekt im Speicher<br />
-Zeiger zeigen auf die Adresse eines anderen Objekts</p>
<p>..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1027582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027582</guid><dc:creator><![CDATA[Noch ganz wenig verwirrt]]></dc:creator><pubDate>Thu, 30 Mar 2006 23:00:10 GMT</pubDate></item><item><title><![CDATA[Reply to char und char* on Thu, 30 Mar 2006 23:10:12 GMT]]></title><description><![CDATA[<p>Dann sollte doch eigentlich alles klar sein. <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/1027585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027585</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Thu, 30 Mar 2006 23:10:12 GMT</pubDate></item><item><title><![CDATA[Reply to char und char* on Thu, 30 Mar 2006 23:11:54 GMT]]></title><description><![CDATA[<p>Hmm eins versteh ich immer noch nicht ganz...</p>
<pre><code class="language-cpp">// Warum muss man keinen Adressoperator voransetzen?
    char* b = &quot;Haha&quot;;

    // Zum Vergleich...
    int* p = &amp;a;
</code></pre>
<p>Und warum ist dann *b gleich &quot;H&quot; und b bei der Ausgabe der ganze String</p>
<p>b ist doch das Zeigerobjekt welches auf die Adresse verweist<br />
und *b zeigt doch auch auf die Adresse...</p>
<p><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>
]]></description><link>https://www.c-plusplus.net/forum/post/1027586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027586</guid><dc:creator><![CDATA[Doch noch Verwirrter]]></dc:creator><pubDate>Thu, 30 Mar 2006 23:11:54 GMT</pubDate></item><item><title><![CDATA[Reply to char und char* on Thu, 30 Mar 2006 23:25:55 GMT]]></title><description><![CDATA[<p>Weil a eine Variable ist. &quot;Haha&quot; ist eine statisch hinterlegte Zeichenkette, dass wandelt der Compiler dann schon alles entsprechend um. *b bedeutet das du den Zeiger dereferenzierst und d.h., da er auf den Anfang der Zeichenkette zeigt, kommt dabei das 'H' raus.</p>
<pre><code class="language-cpp">void charOut(char *p) {
  while(*p != '\0') {
    cout &lt;&lt; *p &lt;&lt; endl;
    ++p;
  }
}
</code></pre>
<p>Wenn du jetzt einen C-String an diese Funktion übergibst, wird es dir zeigen, dass p immer auf die nachfolgende Adresse zeigt, wo immer ein Zeichen bei rauskommt, wenn du es dereferenzierst. Wenn du in der Zeile mit der Ausgabe, dies schreiben würdest:</p>
<pre><code class="language-cpp">cout &lt;&lt; p &lt;&lt; endl;
</code></pre>
<p>Würde der String immer um 1 Zeichen kürzer werden.<br />
b enthält die Adresse auf ein Zeichen und *b ist das Zeichen an der Adresse in b. Warum &quot;cout &lt;&lt; p;&quot; den gesamten String ausgibt, hängt an damit zusammen das der operator&lt;&lt; entsprechend überladen wurde. Es könnte genauso gut die Adresse von b ausgegeben werden, was aber doch etwas unhandlich wäre. Wenn man die Adresse haben will, kann man immer noch einen entsprechenden Cast verwenden.</p>
<p>Vielleicht solltest dir mal das hier ansehen und versuchen ohne Compiler zu lösen ;):<br />
<a href="http://www.fh-wedel.de/~si/vorlesungen/c/felderUndZeiger/zeigersalat.html" rel="nofollow">http://www.fh-wedel.de/~si/vorlesungen/c/felderUndZeiger/zeigersalat.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1027587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027587</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Thu, 30 Mar 2006 23:25:55 GMT</pubDate></item><item><title><![CDATA[Reply to char und char* on Thu, 30 Mar 2006 23:42:19 GMT]]></title><description><![CDATA[<p>Achsoo, man sollte besser unabhängig von der Standardausgabe versuchen sowas zu verstehen <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="😞"
    /></p>
<p>&quot;b enthält die Adresse auf ein Zeichen und *b ist das Zeichen an der Adresse in b&quot;</p>
<p>Jetzt ists mir klar <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>Was ist denn das für ein Salat?? Was ist das für ein Operator -&gt; &quot;***&quot; ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1027591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027591</guid><dc:creator><![CDATA[Intelligenter]]></dc:creator><pubDate>Thu, 30 Mar 2006 23:42:19 GMT</pubDate></item></channel></rss>