<?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[Adresse eines char-Arrays ausgeben]]></title><description><![CDATA[<p>die Adressen eines numerischen Arrays können ja wie folgt ermittelt werden:</p>
<pre><code class="language-cpp">int feld[4]={1,2,3,4};

int *zfeld;  // Zeiger auf eine int Variable
zfeld = feld; // oder zfeld = &amp;feld[0]

cout &lt;&lt; feld     &lt;&lt; endl; // Adresse des ersten Arrayelementes
cout &lt;&lt; &amp;feld[0] &lt;&lt; endl; // wie oben , weil feld = &amp;feld[0]
cout &lt;&lt; zfeld    &lt;&lt; endl; // wie oben,  weil wir dem Zeiger die Adresse
                          // von dem ersten Element von feld[4] zugewiesen haben

cout&lt;&lt;feld+2;  /// Adresse des 3. Elements
</code></pre>
<p>nur wie ermittle ich die Adressen eines char Arrays ?<br />
cout wird hier immer den Wert ausgeben. Wobei der Feldname ja immer noch die Adresse enthält.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/262140/adresse-eines-char-arrays-ausgeben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 21:48:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/262140.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Mar 2010 16:40:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Adresse eines char-Arrays ausgeben on Mon, 01 Mar 2010 16:40:02 GMT]]></title><description><![CDATA[<p>die Adressen eines numerischen Arrays können ja wie folgt ermittelt werden:</p>
<pre><code class="language-cpp">int feld[4]={1,2,3,4};

int *zfeld;  // Zeiger auf eine int Variable
zfeld = feld; // oder zfeld = &amp;feld[0]

cout &lt;&lt; feld     &lt;&lt; endl; // Adresse des ersten Arrayelementes
cout &lt;&lt; &amp;feld[0] &lt;&lt; endl; // wie oben , weil feld = &amp;feld[0]
cout &lt;&lt; zfeld    &lt;&lt; endl; // wie oben,  weil wir dem Zeiger die Adresse
                          // von dem ersten Element von feld[4] zugewiesen haben

cout&lt;&lt;feld+2;  /// Adresse des 3. Elements
</code></pre>
<p>nur wie ermittle ich die Adressen eines char Arrays ?<br />
cout wird hier immer den Wert ausgeben. Wobei der Feldname ja immer noch die Adresse enthält.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862833</guid><dc:creator><![CDATA[rotondo]]></dc:creator><pubDate>Mon, 01 Mar 2010 16:40:02 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines char-Arrays ausgeben on Mon, 01 Mar 2010 16:47:05 GMT]]></title><description><![CDATA[<p>Das liegt daran, weil der Operator &lt;&lt; eine Sonderbehandlung für char* hat. Caste den Zeiger einfach auf etwas anderes. Dies hier sollte funktionieren:</p>
<pre><code class="language-cpp">char feld[4]={1,2,3,4};
 cout &lt;&lt; static_cast&lt;void*&gt;(feld)     &lt;&lt; endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1862842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862842</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 01 Mar 2010 16:47:05 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines char-Arrays ausgeben on Mon, 01 Mar 2010 16:52:13 GMT]]></title><description><![CDATA[<p>rotondo schrieb:</p>
<blockquote>
<p>nur wie ermittle ich die Adressen eines char Arrays ?</p>
</blockquote>
<p>Prinzipiell genauso. Du musst nur den Zeiger vorher nach void* konvertieren, damit auch die Adresse ausgegeben wird und nicht die Zeichenkette, auf die der char-Zeiger zeigt.</p>
<p>rotondo schrieb:</p>
<blockquote>
<p>cout wird hier immer den Wert ausgeben.<br />
Wobei der Feldname ja immer noch die Adresse enthält.</p>
</blockquote>
<p>Der Wert eines Zeigers <em>ist</em> die Adresse. Der Feldname <em>enthält</em> keine Adresse. Das Feld sitzt aber irgendwo im Speicher an einer bestimmten Adresse.</p>
<p>SeppJ ist mir heute scheinbar 2-3 Minuten voraus. Wen nich auf Preview klicke, hat er seine Antwort schon drunter gesetzt. <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/1862850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862850</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 01 Mar 2010 16:52:13 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines char-Arrays ausgeben on Mon, 01 Mar 2010 17:04:27 GMT]]></title><description><![CDATA[<blockquote>
<p>Der Wert eines Zeigers <em>ist</em> die Adresse. Der Feldname <em>enthält</em> keine Adresse. Das Feld sitzt aber irgendwo im Speicher an einer bestimmten Adresse.</p>
</blockquote>
<p>Darf man sagen das der Name eines Arrays ein Zeiger auf das erste Element ist ?</p>
<p>zum casten:</p>
<p>hab grad folgendes probiert</p>
<pre><code class="language-cpp">char feld[6]=&quot;Hallo&quot;;

cout&lt;&lt;(int)feld;  // wird hier die Adresse des ersten Elements ausgegeben ?
</code></pre>
<p>Aber mit (hex) bekomme ich keinen Hex Wert der Adresse</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862862</guid><dc:creator><![CDATA[ROTONDO]]></dc:creator><pubDate>Mon, 01 Mar 2010 17:04:27 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines char-Arrays ausgeben on Mon, 01 Mar 2010 17:07:12 GMT]]></title><description><![CDATA[<p>du hast mir ja die Lösung gegeben!! <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>
<pre><code class="language-cpp">cout&lt;&lt;(void*)feld;
</code></pre>
<p>aber was passiert hier genau und warum mit void ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862868</guid><dc:creator><![CDATA[rotondo]]></dc:creator><pubDate>Mon, 01 Mar 2010 17:07:12 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines char-Arrays ausgeben on Mon, 01 Mar 2010 17:39:23 GMT]]></title><description><![CDATA[<p>rotondo schrieb:</p>
<blockquote>
<p>du hast mir ja die Lösung gegeben!! <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>
<pre><code class="language-cpp">cout&lt;&lt;(void*)feld;
</code></pre>
<p>aber was passiert hier genau und warum mit void ?</p>
</blockquote>
<p>Wie du schon festgestellt hast, verhalt sich der Name eines Arrays sobald man es an eine Funktion übergibt wie ein Zeiger auf das erste Element. Der Operator&lt;&lt; des Objekts cout ist so eine Funktion. Diese Funktion ist für allerlei verschiedene Typen überladen, unter anderem für <code>void*</code> und für <code>char*</code> . Rufst du den Operator&lt;&lt; mit dem Namen eines char-Arrays auf, so wird ein <code>char*</code> erkannt und die entsprechende Überladung benutzt. Die Funktion für <code>char*</code> gibt einen C-String aus.</p>
<p>Wird irgendein anderer Zeiger an den Operator&lt;&lt; übergeben (oder äquivalent der Name eines Feldes eines anderen Typen als char[]), so gibt es erstmal keine genau passende Funktion die aufgerufen werden könnte. Aber es existiert eine implizite Konvertierung von allen Zeigertypen nach <code>void*</code> . Diese wird dann benutzt und es wird die Überladung für <code>void*</code> benutzt. Diese gibt die Adresse aus, auf die der übergebene Zeiger zeigt.</p>
<p>willst du nun die Adresse eines <code>char*</code> ausgeben, so musst du irgendwie kenntlich machen, dass du die Überladung für <code>void*</code> benutzen willst und nicht die Überladung für <code>char*</code> . Dazu reicht es, den <code>char*</code> zu irgendeinen anderen Zeigertypen zu casten, in diesem Fall würde dieser andere Zeigertyp wieder zu <code>void*</code> konvertiert und die Überladung für <code>void*</code> benutzt. Man kann sich diese Indirektion aber auch sparen und direkt zu <code>void*</code> casten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862884</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 01 Mar 2010 17:39:23 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines char-Arrays ausgeben on Mon, 01 Mar 2010 17:58:18 GMT]]></title><description><![CDATA[<p>ROTONDO schrieb:</p>
<blockquote>
<blockquote>
<p>Der Wert eines Zeigers <em>ist</em> die Adresse. Der Feldname <em>enthält</em> keine Adresse. Das Feld sitzt aber irgendwo im Speicher an einer bestimmten Adresse.</p>
</blockquote>
<p>Darf man sagen das der Name eines Arrays ein Zeiger auf das erste Element ist?</p>
</blockquote>
<p>Nein, darf man nicht, wenn man nichts falsch sagen will. Der Name eines Arrays ist ein &quot;Lvalue-Ausdruck&quot; desselben Array-Typs. Beispiel:</p>
<pre><code class="language-cpp">int dings[5];
</code></pre>
<p><code>dings</code> bezeichnet einen Lvalue-Ausdruck vom Typ int[5]. Es gibt aber einen Mechanismus, derr sich &quot;array-to-pointer-decay&quot; nennt. Das heißt, dass wenn man den Namen als Initialisierer für etwas benutzt, was keine Referenz ist, findet automatisch eine Umwandlung zu einem Zeiger auf das erste Element statt:</p>
<pre><code class="language-cpp">int *zeiger1 = dings;
</code></pre>
<p>Trotzdem ist dings kein Zeiger. Das sieht nur so aus wegen der impliziten Umwandlung. Wenn <code>dings</code> ein Zeiger wäre, würde folgendes nicht mehr funktionieren:</p>
<pre><code class="language-cpp">void foo(int (&amp; array_referenz)[5]);

void bar() {
  int arr[5];
  foo(arr);
}
</code></pre>
<p>Die Funktion <code>foo</code> bekommt eine Referenz auf ein 5-elementiges Array und keinen Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862897</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 01 Mar 2010 17:58:18 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines char-Arrays ausgeben on Mon, 01 Mar 2010 18:18:27 GMT]]></title><description><![CDATA[<p>Danke! Jetzt hab ich sogar Seppls Zeiger verstanden <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="🙂"
    /> Und da macht der void Zeiger auch wieder Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862907</guid><dc:creator><![CDATA[rotondo]]></dc:creator><pubDate>Mon, 01 Mar 2010 18:18:27 GMT</pubDate></item></channel></rss>