<?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[Zeiger &amp;amp; Array [Klausurvorbeireitung für C++]]]></title><description><![CDATA[<pre><code class="language-cpp">Hallo Leute, 

ich stecke gerade mitten in der Klausurvorbereitung für meine C++ - Klausur, da springt mir auf einmal etwas ins Auge, das ich auch nach durchforsten
meiner Unterlagen und des googles nicht gefunden habe 
(evt. falsche Suche bei Google, da ich nicht wusste, was ich da eingeben sollte).

Zu meinem Problem, ich habe eine Probeklausur und bin diese gerade am Ausfüllen da tauchte eine Aufgabe Auf:

int arr[10] = {8, 6, 1, 2, 3, 5, 10, 17}, *parr;
parr = arr;

cout &lt;&lt; *parr &lt;&lt; endl;
cout &lt;&lt; *(parr + 7) &lt;&lt; endl;
cout &lt;&lt; *parr + 5 &lt;&lt; endl;
parr++;
cout &lt;&lt; *parr &lt;&lt; endl;
parr += 4;
cout &lt;&lt; *parr &lt;&lt; endl;
cout &lt;&lt; parr[-3] &lt;&lt; endl;
</code></pre>
<p>Mir ist klar was die ersten Zeilen ergeben, soweit bin ich ja gott sei dank schon :-):</p>
<pre><code>cout &lt;&lt; *parr &lt;&lt; endl;    -&gt; Ausgabe des Wertes der Anfangsadresse (Stelle[0]) Wert: -&gt; &quot;8&quot;
cout &lt;&lt; *(parr + 7) &lt;&lt; endl;    -&gt; Ausgabe des Wertes der der Anfangsadresse+7 [0+7] Wert: -&gt; 17
cout &lt;&lt; *parr + 5 &lt;&lt; endl;      -&gt; Ausgabe des Wertes der Stelle[0] +5 Wert: -&gt; 8 + 5 = 13
parr++;
cout &lt;&lt; *parr &lt;&lt; endl;          -&gt; Ausgabe der Inkrementierten Stelle [0++] Wert:  -&gt; 6
parr += 4;
cout &lt;&lt; *parr &lt;&lt; endl;         -&gt; Inkrementierte Stelle wird nochmals um 4 Erhöht Wert an der Stelle [1 + 4] -&gt; 5
cout &lt;&lt; parr[-3] &lt;&lt; endl;         [u] [b]Und an dieser Stelle steht meine Nuss,
ich habe sie inzwischen auch schon kompiliert und weis, dass dort 1 Angezeigt
wird, weiß jedoch leider nicht warum :-(  [/b][/u]
</code></pre>
<p>Ich bin für jede Hilfe dankbar!</p>
<p>Grüße</p>
<p>EpoX</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/290284/zeiger-amp-array-klausurvorbeireitung-für-c</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 16:04:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/290284.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 23 Jul 2011 10:53:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger &amp;amp; Array [Klausurvorbeireitung für C++] on Sat, 23 Jul 2011 10:53:50 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Hallo Leute, 

ich stecke gerade mitten in der Klausurvorbereitung für meine C++ - Klausur, da springt mir auf einmal etwas ins Auge, das ich auch nach durchforsten
meiner Unterlagen und des googles nicht gefunden habe 
(evt. falsche Suche bei Google, da ich nicht wusste, was ich da eingeben sollte).

Zu meinem Problem, ich habe eine Probeklausur und bin diese gerade am Ausfüllen da tauchte eine Aufgabe Auf:

int arr[10] = {8, 6, 1, 2, 3, 5, 10, 17}, *parr;
parr = arr;

cout &lt;&lt; *parr &lt;&lt; endl;
cout &lt;&lt; *(parr + 7) &lt;&lt; endl;
cout &lt;&lt; *parr + 5 &lt;&lt; endl;
parr++;
cout &lt;&lt; *parr &lt;&lt; endl;
parr += 4;
cout &lt;&lt; *parr &lt;&lt; endl;
cout &lt;&lt; parr[-3] &lt;&lt; endl;
</code></pre>
<p>Mir ist klar was die ersten Zeilen ergeben, soweit bin ich ja gott sei dank schon :-):</p>
<pre><code>cout &lt;&lt; *parr &lt;&lt; endl;    -&gt; Ausgabe des Wertes der Anfangsadresse (Stelle[0]) Wert: -&gt; &quot;8&quot;
cout &lt;&lt; *(parr + 7) &lt;&lt; endl;    -&gt; Ausgabe des Wertes der der Anfangsadresse+7 [0+7] Wert: -&gt; 17
cout &lt;&lt; *parr + 5 &lt;&lt; endl;      -&gt; Ausgabe des Wertes der Stelle[0] +5 Wert: -&gt; 8 + 5 = 13
parr++;
cout &lt;&lt; *parr &lt;&lt; endl;          -&gt; Ausgabe der Inkrementierten Stelle [0++] Wert:  -&gt; 6
parr += 4;
cout &lt;&lt; *parr &lt;&lt; endl;         -&gt; Inkrementierte Stelle wird nochmals um 4 Erhöht Wert an der Stelle [1 + 4] -&gt; 5
cout &lt;&lt; parr[-3] &lt;&lt; endl;         [u] [b]Und an dieser Stelle steht meine Nuss,
ich habe sie inzwischen auch schon kompiliert und weis, dass dort 1 Angezeigt
wird, weiß jedoch leider nicht warum :-(  [/b][/u]
</code></pre>
<p>Ich bin für jede Hilfe dankbar!</p>
<p>Grüße</p>
<p>EpoX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2096771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096771</guid><dc:creator><![CDATA[EpoX2603]]></dc:creator><pubDate>Sat, 23 Jul 2011 10:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger &amp;amp; Array [Klausurvorbeireitung für C++] on Sat, 23 Jul 2011 10:58:44 GMT]]></title><description><![CDATA[<p><div class="plugin-markdown"><input type="checkbox" id="checkbox14410" checked="true" /><label for="checkbox14410">ist kurz für *(foo + x). Nun klar?</label></div></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2096772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096772</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 23 Jul 2011 10:58:44 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger &amp;amp; Array [Klausurvorbeireitung für C++] on Sat, 23 Jul 2011 11:08:21 GMT]]></title><description><![CDATA[<p>Ja vollkommen, dient wohl nur der (Verwirrung) Prüfung des Wissens <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="😃"
    /> also einfach 3 Stellen weiter nach unten. Na klar jetzt wo es mir gesagt wurde klingt es ebenso logisch.</p>
<p>Danke vielmals ! Eine echt schnelle Antwort war das.</p>
<p>Grüße</p>
<p>EpoX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2096773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096773</guid><dc:creator><![CDATA[EpoX2603]]></dc:creator><pubDate>Sat, 23 Jul 2011 11:08:21 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger &amp;amp; Array [Klausurvorbeireitung für C++] on Sat, 23 Jul 2011 11:09:56 GMT]]></title><description><![CDATA[<p>Nach dem parr++ in Zeile 4 zeigt parr auf die 6, nach dem paar+= 4 zeigt parr auf die 5.</p>
<p>Dementsprechend zeigt parr[-3] auch auf &quot;drei elemente vor der 5&quot;, was die eins ist.</p>
<p>Dir sollte klar sein, das sowohl arr als auch parr nur Zeiger sind, die auf konkrete Addresswerte zeigen. Sagen wir, beide zeigen auf die Speicherstelle mit dem Addresswert &quot;100000&quot; (in echt wär das eine 32 oder 64 bit grosse Zahl).</p>
<p>Nach parr++ ist parr also 100001, nach parr+=4 ist parr 100005. der [] operator macht nix anderes, als auf die Adresse, auf die der benutzte Zeiger zeigt, den Wert zwischen den Klammern abzuziehen. parr[-3] ist also 100002, was eben die 1 ist.</p>
<p>Dazu solltest du noch wissen, dass C++ Compiler das auch tatsächlich so anstellen, dass Werte in nem Array auch wirklich hintereinander im Speicher liegen (Zumindest auf Betriebssystem-Ebene. Kann sein dass bestimmte Betriebssysteme zwischen virtuellem und echten Speicher hin- und hermappen).</p>
<p>edit: Bissel zu spät <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/2096774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096774</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 23 Jul 2011 11:09:56 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger &amp;amp; Array [Klausurvorbeireitung für C++] on Sat, 23 Jul 2011 11:43:49 GMT]]></title><description><![CDATA[<p>Ich hab noch eine Aufgabe aus einer älteren Prüfung und bin am Zweifeln ob ich das überhaupt noch schaffen werd &lt;.&lt;:</p>
<pre><code class="language-cpp">char word[] = &quot;Karlsberg Brauerei, Homburg&quot;, *p = word;
cout &lt;&lt; char(*p+1) &lt;&lt; endl;
cout &lt;&lt; (char)(*(p+=7) - 2) &lt;&lt; endl; 
cout &lt;&lt; (*(p)) &lt;&lt; endl;
p+=3;
cout &lt;&lt; *p &lt;&lt; endl; 
*(p+1) = *p;
p = &amp;(*(p+1));
*(p+5) = *(p+6) = *(word+4) = 0;
cout &lt;&lt; p &lt;&lt; endl; 
p = word;
cout &lt;&lt; p &lt;&lt; endl;
</code></pre>
<p>Bei der Zeile:</p>
<blockquote>
<p>p += 3 -&gt; Ausgabe der Stelle 10 -&gt; &quot;B&quot;</p>
</blockquote>
<p>verlassen mich meine kenntnisse mal wieder, ich frage mich so langsam wie es sein kann dass 4 Monate lang vor einem jemand steht, der predigt, dass die Sprache vom &quot;schreiben&quot; lebt und ich hab geschrieben und bin auch net schlecht dabei gewesen und dann kommen in Prüfungen solche &quot;FÄKALWORT&quot; - Aufgaben, die ich noch nie in meinem Leben gesehen habe und die die abartigste Syntax haben, die mir jemals unter gekommen ist. Naja diese Frage wird wohl niemand beantworten können, aber vl die weitere Ausgabe des Programms.</p>
<p>Vielen dank schonmal, Ihr könntet der Grund für eine Rettung sein !</p>
<p>Grüße</p>
<p>EpoX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2096775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096775</guid><dc:creator><![CDATA[EpoX2603]]></dc:creator><pubDate>Sat, 23 Jul 2011 11:43:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger &amp;amp; Array [Klausurvorbeireitung für C++] on Sat, 23 Jul 2011 11:56:15 GMT]]></title><description><![CDATA[<p>In Zeile 3 wurde p bereits inkrementiert. Mit der Zeile 5 wurde p um 10 erhöht, was genau dem grossen B entspricht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2096778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096778</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 23 Jul 2011 11:56:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger &amp;amp; Array [Klausurvorbeireitung für C++] on Sat, 23 Jul 2011 12:13:27 GMT]]></title><description><![CDATA[<p>Es ist echt schrecklich, was an manchen Schulen für ein Pseudo C++ gelehrt wird. Das ist ja nicht mal mehr C (selbst dort kommt man selten zu so komplizierten Konstrukten), das ist einfach nur noch scheiße.<br />
Ich hab nächstes Jahr in der Schule C++, dieses Jahr war der Lehrer stolz darauf, dass er kein einziges mal das Wort 'Zeiger' bzw 'Pointer' erwähnen musste. Man wird sehen. *kopfschüttel*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2096785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096785</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 23 Jul 2011 12:13:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger &amp;amp; Array [Klausurvorbeireitung für C++] on Sat, 23 Jul 2011 12:14:28 GMT]]></title><description><![CDATA[<p>Natürlich, soweit ist mir das ja klar, aber danach wird folgende ausgabe für alle Zeilen nach der ausgabe &quot;B&quot; erzeugt:</p>
<pre><code>Bauer
Karl
</code></pre>
<p>Nur warum das so ist kann ich mir nicht erklären, ich kann ja sehen, das Karl die &quot;Werte&quot; der Stellen 0 - 4 sind, und &quot;Bauer&quot;<br />
die der Stellen 10, 12 - 15 sind, aber wie um alles in der Welt kommt es dazu ?</p>
<pre><code>*(p+1) = *p;
p = &amp;(*(p+1));
*(p+5) = *(p+6) = *(word+4) = 0;
</code></pre>
<p>erzgeut: &quot;Karl&quot;</p>
<p>und</p>
<pre><code>p = word;
</code></pre>
<p>gibt &quot;Bauer&quot; aus ... nur völlig surreal also mir erschließen sich da keine Zusammenhänge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2096788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096788</guid><dc:creator><![CDATA[EpoX2603]]></dc:creator><pubDate>Sat, 23 Jul 2011 12:14:28 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger &amp;amp; Array [Klausurvorbeireitung für C++] on Sat, 23 Jul 2011 12:34:25 GMT]]></title><description><![CDATA[<p>EpoX2603 schrieb:</p>
<blockquote>
<p>nur völlig surreal also mir erschließen sich da keine Zusammenhänge.</p>
</blockquote>
<p>Alles aus dem Kopf, hoffe da sind jetzt keine Fehler.</p>
<pre><code class="language-cpp">char word[] = &quot;Karlsberg Brauerei, Homburg&quot;, *p = word; // p -&gt; &quot;Karlsberg Brauerei, Homburg&quot;;
  cout &lt;&lt; char(*p+1) &lt;&lt; endl; // (*p) = K, 'K' + 1 = L;
  cout &lt;&lt; (char)(*(p+=7) - 2) &lt;&lt; endl; // p -&gt; &quot;rg Brauerei, Homburg&quot;; (*p) = r, 'r' - 2 = 'p';
  cout &lt;&lt; (*(p)) &lt;&lt; endl; // (*p) = r;
  p+=3; // p -&gt; &quot;Brauerei, Homburg&quot;;
  cout &lt;&lt; *p &lt;&lt; endl; // *p = 'B';
  *(p+1) = *p; // p -&gt; &quot;BBauerei, Homburg&quot;;
  p = &amp;(*(p+1)); // p = p + 1;
  *(p+5) = *(p+6) = *(word+4) = 0; // p -&gt; &quot;Bauer&quot;, ( &quot; ..BBauer\0..&quot; ); word -&gt; &quot;Karl&quot;, ( &quot;Karl\0..&quot;);
  cout &lt;&lt; p &lt;&lt; endl; 
  p = word; // p -&gt; &quot;Karl&quot;;
  cout &lt;&lt; p &lt;&lt; endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2096792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096792</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 23 Jul 2011 12:34:25 GMT</pubDate></item></channel></rss>