<?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[Wie versteht man Zeigerarithmetik??]]></title><description><![CDATA[<p>Guten Abend liebe Gemeinde.</p>
<p>Im Skript meines Lehrers zu C++ steht in Bezug auf die Zeigerarithmetik folgendes:</p>
<pre><code class="language-cpp">Addition/Subtraktion Zeiger und Integerwert führt zu:
Zeiger = Zeiger + (Integerwert * Länge des Objektes)
</code></pre>
<p>Im Buch &quot;Der C++ Programmierer&quot; steht es jedoch anders und einleuchtender (jeder, der das Buch hat, liest bitte die Seiten 192 und 193 durch, zu zitieren würde zu lange dauern)...</p>
<p>Nach wem soll ich mich jetzt richten??</p>
<p>Danke für die Antworten im Voraus.</p>
<p>Gruß</p>
<p>Max</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311852/wie-versteht-man-zeigerarithmetik</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 23:03:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311852.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 16 Dec 2012 17:40:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Sun, 16 Dec 2012 17:40:41 GMT]]></title><description><![CDATA[<p>Guten Abend liebe Gemeinde.</p>
<p>Im Skript meines Lehrers zu C++ steht in Bezug auf die Zeigerarithmetik folgendes:</p>
<pre><code class="language-cpp">Addition/Subtraktion Zeiger und Integerwert führt zu:
Zeiger = Zeiger + (Integerwert * Länge des Objektes)
</code></pre>
<p>Im Buch &quot;Der C++ Programmierer&quot; steht es jedoch anders und einleuchtender (jeder, der das Buch hat, liest bitte die Seiten 192 und 193 durch, zu zitieren würde zu lange dauern)...</p>
<p>Nach wem soll ich mich jetzt richten??</p>
<p>Danke für die Antworten im Voraus.</p>
<p>Gruß</p>
<p>Max</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280649</guid><dc:creator><![CDATA[silent_max]]></dc:creator><pubDate>Sun, 16 Dec 2012 17:40:41 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Sun, 16 Dec 2012 17:44:56 GMT]]></title><description><![CDATA[<p>Ich denke, dein Lehrer hat das schon richtig beschrieben.</p>
<p>Wenn du schreibst</p>
<pre><code class="language-cpp">Zeiger = Zeiger + Integerwert
</code></pre>
<p>Wird das vom Compiler umgewandelt in</p>
<pre><code class="language-cpp">Zeiger = Zeiger + (Integerwert * Länge des Objektes)
</code></pre>
<p>d.h. du brauchst dich nicht darum zu kümmern, wie lang das Objekt jetzt genau ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280654</guid><dc:creator><![CDATA[bnadrfha]]></dc:creator><pubDate>Sun, 16 Dec 2012 17:44:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Sun, 16 Dec 2012 18:02:15 GMT]]></title><description><![CDATA[<p>Ersteinmal vielen Dank für die rasche Antwort.</p>
<p>Ich verstehe es halt nicht ...</p>
<p>Also machen wir es an einem Beispiel:</p>
<pre><code class="language-cpp">int a = 5;
int *pa=&amp;a;
</code></pre>
<p>Wenn ich jetzt nach</p>
<pre><code class="language-cpp">Zeiger = Zeiger + Integerwert
</code></pre>
<p>gehe, dann müsste es ja wie folgt heißen:</p>
<pre><code class="language-cpp">pa = pa + 5;
</code></pre>
<p>Oder verstehe ich da etwas verkehrt??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280660</guid><dc:creator><![CDATA[silent_max]]></dc:creator><pubDate>Sun, 16 Dec 2012 18:02:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Sun, 16 Dec 2012 18:09:07 GMT]]></title><description><![CDATA[<p>Ist C++ für dich ein Ratespiel? Dein Code macht genau null Sinn. Vielleicht wäre es sinnvoll, den Text, den du durchliest auch zu verstehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280666</guid><dc:creator><![CDATA[bnadrfha]]></dc:creator><pubDate>Sun, 16 Dec 2012 18:09:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Sun, 16 Dec 2012 18:14:42 GMT]]></title><description><![CDATA[<p>silent_max schrieb:</p>
<blockquote>
<p>Oder verstehe ich da etwas verkehrt??</p>
</blockquote>
<p>Ja, das tust du. Dein Code enthält nämlich gar keine Zeigerarathmetik.</p>
<p>Ein Beispiel für Zeigerarathmetik wäre</p>
<pre><code>int a = 5;
int *pa=&amp;a;
pa = pa+4; // Setzt pa auf pa + ( 4 * sizeof(int) )
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2280669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280669</guid><dc:creator><![CDATA[Tobiking2]]></dc:creator><pubDate>Sun, 16 Dec 2012 18:14:42 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Sun, 16 Dec 2012 18:16:37 GMT]]></title><description><![CDATA[<p>silent_max schrieb:</p>
<blockquote>
<p>gehe, dann müsste es ja wie folgt heißen:</p>
</blockquote>
<p>Was ist &quot;es&quot;?</p>
<p>silent_max schrieb:</p>
<blockquote>
<pre><code class="language-cpp">pa = pa + 5;
</code></pre>
<p>Oder verstehe ich da etwas verkehrt??</p>
</blockquote>
<p>Das kommt darauf an, was du glaubst, verstanden zu haben. Die Zeile wird zwar kompilieren, ist aber undefiniertes Verhalten und völliger Quatsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280670</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Sun, 16 Dec 2012 18:16:37 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Sun, 16 Dec 2012 18:31:07 GMT]]></title><description><![CDATA[<p>bnadrfha schrieb:</p>
<blockquote>
<p>Ist C++ für dich ein Ratespiel? Dein Code macht genau null Sinn.</p>
</blockquote>
<p>Ratespiel hin oder her ... Wenn ich etwas nicht verstehe, dann frage ich halt nach. Und wenn es Dir unangenehm ist, dann kann ich ja nichts dafür oder?</p>
<p>Zurück zum Thema und beim Beispiel von Tobiking2 bleibend...</p>
<pre><code class="language-cpp">int a = 5;  // Zahl auf Ganzzahl 5 gesetzt
int *pa=&amp;a; // Pointer auf die Variable deklariert und initialisiert
pa = pa+4;  // Hat mit der obigen 5 soweit nichts tun
</code></pre>
<p>Oder verstehe ich es immer noch nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280674</guid><dc:creator><![CDATA[silent_max]]></dc:creator><pubDate>Sun, 16 Dec 2012 18:31:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Sun, 16 Dec 2012 18:55:52 GMT]]></title><description><![CDATA[<p>Probiers mal mit nem Array, vielleicht verstehst du es dann:</p>
<pre><code class="language-cpp">int a[] = {1, 3};  // Array mit den Werten 5 und 3 initialisieren
int *pa=&amp;a; // Pointer zeigt auf die Adresse des ersten Elements im Array a, also auf a[0]
pa = pa+a[0];  // Pointer zeigt nun um a[0] * sizeof(int) Bytes weiter, da das Array aus int Werten besteht, also nun auf a[1]. Die Adresse von pa enthält also den Wert 3. a[0] hat den Wert 1, deswegen wird der Adresszeiger um 1 * sizeof(int) verschoben.
</code></pre>
<p>Wie groß sizeof(int) nun ist, ist Rechnerabhänigg.</p>
<p>Beispiel:<br />
Auf einem 32 Bit Rechner sind 4 Bytes ein typischer wert.<br />
Wenn also dein Adresszeiger zuerst auf die Adresse 39F3CA02 zeigen würde, dann würde er nach der pa = pa+a[0] Operation auf 38F3CA06 zeigen. Also um 4 Bytes verschoben, denn ein int ist 4 Bytes groß und wieviele int Werte man nun weiter geht, ist durch die 1, also a[0] festgelegt.</p>
<p>Würde pa noch auf a[0] zeigen und würdest du pa = pa + 2 ausführen, dann würde dein Zeiger auf eine Stelle außerhalb des Arrays zeigen und das ist undefiniertes Verhalten.<br />
Genau das machst du aber in deinem ersten Code, denn dort hast du kein Array, sondern nur einen einzigen int Wert, also a. Was an der Adresse von a 4 Bytes weiter liegt, das ist nicht definiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280683</guid><dc:creator><![CDATA[Programmierfachprofi]]></dc:creator><pubDate>Sun, 16 Dec 2012 18:55:52 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Sun, 16 Dec 2012 18:57:50 GMT]]></title><description><![CDATA[<p>Sorry, hab vergessen das Kommentar noch zu ändern, nach dem ich den ersten Wert im Array geändert habe.</p>
<p>Dies sollte natürlich lauten:</p>
<p>// Array mit den Werten 1 und 3 initialisieren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280685</guid><dc:creator><![CDATA[Programmierfachprofi]]></dc:creator><pubDate>Sun, 16 Dec 2012 18:57:50 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Sun, 16 Dec 2012 19:00:09 GMT]]></title><description><![CDATA[<p>Ups, da hat sich beim nochmaligen Abtippen ein Fehler eingeschlichen.</p>
<p>Der zweite Adresswert ist natürlich:<br />
3<strong>9</strong>F3CA06</p>
<p>Die 8 war ein Tippfehler, hab das geänderte nun fett hervorgehoben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280686</guid><dc:creator><![CDATA[Programmierfachprofi]]></dc:creator><pubDate>Sun, 16 Dec 2012 19:00:09 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Sun, 16 Dec 2012 19:03:01 GMT]]></title><description><![CDATA[<p>Du bist kein Programmierfachprofi.<br />
Dein Beispiel ist falsch und schlecht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280691</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 16 Dec 2012 19:03:01 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Sun, 16 Dec 2012 19:12:38 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Du bist kein Programmierfachprofi.<br />
Dein Beispiel ist falsch und schlecht.</p>
</blockquote>
<p>Jup, sollte so heißen:</p>
<pre><code class="language-cpp">int a[] = {1, 3};
int *pa=a;
pa+=1; // oder ++pa;
</code></pre>
<p>@ silent_max: Du hast irgendwo mal geschrieben, dass morgen irgendeine Prüfung anstehe. Und nun meinst du, mit mehreren Posts zu Einsteigerfragen am Sonntagabend irgendwie durchzukommen? Deine Fragen sind ungefähr die gleichen wie vor 9 Monaten <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="🙄"
    /><br />
Ich hoffe, dass dein Lehrer keine Ahnung hat, dann könnte das sogar klappen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280696</guid><dc:creator><![CDATA[ohoh]]></dc:creator><pubDate>Sun, 16 Dec 2012 19:12:38 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 09:19:47 GMT]]></title><description><![CDATA[<p>ohoh schrieb:</p>
<blockquote>
<p>@ silent_max: Du hast irgendwo mal geschrieben, dass morgen irgendeine Prüfung anstehe. Und nun meinst du, mit mehreren Posts zu Einsteigerfragen am Sonntagabend irgendwie durchzukommen? Deine Fragen sind ungefähr die gleichen wie vor 9 Monaten <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="🙄"
    /><br />
Ich hoffe, dass dein Lehrer keine Ahnung hat, dann könnte das sogar klappen...</p>
</blockquote>
<p>Nein, ich habe erst im neuen Jahr eine Prüfung in C++ Programmierung.</p>
<p>Warum haben eigentlich so viele was gegen meine Fragen??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280795</guid><dc:creator><![CDATA[silent_max]]></dc:creator><pubDate>Mon, 17 Dec 2012 09:19:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 09:25:50 GMT]]></title><description><![CDATA[<p>Schreib doch mal dein Beispiel korrekt auf, also was ist das Problem, was sind deine Annahmen, was sind deine Erwartungen and das Ergebnis und was kommt tatsaechlich raus.</p>
<p>Kurz: Zeigerarithmetik ist 'Rechnen mit Zeigern als Operanden', d.h. es muss erstmal + oder - her. Das Ergebnis ist wieder ein Zeiger, aber welcher Wert dieser hat oder worauf er nach einer Addition mit 5 zeigt, haengt vom Typ ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280798</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 17 Dec 2012 09:25:50 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 11:47:51 GMT]]></title><description><![CDATA[<p>silent_max schrieb:</p>
<blockquote>
<p>Warum haben eigentlich so viele was gegen meine Fragen??</p>
</blockquote>
<p>Weil sich die meisten Deiner Fragen mit guter Literatur nicht stellen sollten.<br />
Entweder überfliegst Du nur Dein Lernmaterial ohne auch nur 2 Minuten darüber nachzudenken, bis Du hier einen Beitrag schreibst, oder Du bist hoffnungslos mit programmieren überfordert.<br />
Ich assoziiere Deinen Nick schon mit &quot;Hoffnungsloser Fall&quot;. Nicht böse gemeint, aber es scheint einfach nichts für Dich zu sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280844</guid><dc:creator><![CDATA[qwertzy]]></dc:creator><pubDate>Mon, 17 Dec 2012 11:47:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 11:51:46 GMT]]></title><description><![CDATA[<p>silent_max schrieb:</p>
<blockquote>
<p>Warum haben eigentlich so viele was gegen meine Fragen??</p>
</blockquote>
<p>Weil Du hier seit Monanten ohne erkennbare Verbesserung Deiner Kenntnisse rumfragst. Dabei probierst Du einfach nur wild rum, ein ordentliches Buch zu nehmen, und dieses durchzuarbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280846</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 17 Dec 2012 11:51:46 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 12:20:18 GMT]]></title><description><![CDATA[<p>qwertzy schrieb:</p>
<blockquote>
<p>Weil sich die meisten Deiner Fragen mit guter Literatur nicht stellen sollten.<br />
Entweder überfliegst Du nur Dein Lernmaterial ohne auch nur 2 Minuten darüber nachzudenken, bis Du hier einen Beitrag schreibst, oder Du bist hoffnungslos mit programmieren überfordert.<br />
Ich assoziiere Deinen Nick schon mit &quot;Hoffnungsloser Fall&quot;. Nicht böse gemeint, aber es scheint einfach nichts für Dich zu sein.</p>
</blockquote>
<p>Aha ... was ist für Dich gute Literatur?</p>
<p>Wer sieht mich alles noch als hoffnungsloser Fall an?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280851</guid><dc:creator><![CDATA[silent_max]]></dc:creator><pubDate>Mon, 17 Dec 2012 12:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 12:26:22 GMT]]></title><description><![CDATA[<p>Ist doch scheiszegal, mit Verlaub. Knie dich dahinter und fertig.</p>
<p>Hast du noch Fragen zum Threadthema, oder ist es dir inzwischen klar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280853</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Mon, 17 Dec 2012 12:26:22 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 12:30:09 GMT]]></title><description><![CDATA[<p>silent_max schrieb:</p>
<blockquote>
<p>Wer sieht mich alles noch als hoffnungsloser Fall an?</p>
</blockquote>
<p>Ich würd mich von den anderen nicht unterkriegen lassen. Jeder hat mal angefangen. Bei manchen ist der Anfang hat etwas schwerer.</p>
<p>Was man vielleicht mal erwähnen sollte. Das C++, das 90% der Dozenten lehren ist nicht das C++, das in einem guten Lehrbuch gelehrt wird. Du hast doch den &quot;C++ Programmierer&quot; vom Breymann. Ich kann mich jetzt nicht daran erinner, dass dort irgendwie printf und Zeigergefrickel drankamen. Wenn du also gleichzeitig das Zeug vom Dozenten und den Breymann lernst, schießt du dich selbst ins aus. Oder wie siehst du das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280855</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Mon, 17 Dec 2012 12:30:09 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 12:53:00 GMT]]></title><description><![CDATA[<p>nman schrieb:</p>
<blockquote>
<p>Ist doch scheiszegal, mit Verlaub. Knie dich dahinter und fertig.</p>
<p>Hast du noch Fragen zum Threadthema, oder ist es dir inzwischen klar?</p>
</blockquote>
<p>Eine Frage zum Thema hätte ich noch ...</p>
<p>In welchem Zusammenhang ist die Zeigerarithmetik nötig? Mir fällt gerade kein Anwendungsbeispiel ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280862</guid><dc:creator><![CDATA[silent_max]]></dc:creator><pubDate>Mon, 17 Dec 2012 12:53:00 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 13:31:49 GMT]]></title><description><![CDATA[<p>Immer dann, wenn du einen Zeiger auf irgendeine Stelle irgendeines Arrays hast und ihn verschieben moechtest. Wobei du Pointerarithmetik in modernem C++ generell deutlich seltener sehen wirst, als in C-Programmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280873</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Mon, 17 Dec 2012 13:31:49 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 13:33:15 GMT]]></title><description><![CDATA[<p>Max, schaust du dir das mal bitte an:<br />
<a href="http://www.c-plusplus.net/forum/p1330752#1330752" rel="nofollow">http://www.c-plusplus.net/forum/p1330752#1330752</a></p>
<p>Ein Zeiger belegt auf deinem Rechner vermutlich 4 Byte. Bleiben wir mal dabei.<br />
Ein Int-Zeiger ist nicht viel anderes als ein int selbst. Ein int speichert Zahlen. Ein Zeiger auf Int (Int-Zeiger) speichert, wo andere Ints gespeichert sind, also die Adressen der Ints. Das selbe gilt für ein char. Ein char speichert ein Zeichen. Ein char-Zeiger speichert die Adresse von einem anderen char.</p>
<pre><code>int zahl = 5;  // zahl ist irgendwo im Speicher gespeichert, sagen wir diese Speicherstelle heißt 0x01

cout &lt;&lt; zahl; // gibt zahl aus, also 5.

int* adresseVonZahl = &amp;zahl; // In adresseVonZahl steht nun 0x01, wir hätten auch direkt:
// int* adresseVonZahl = (int*)0x01; machen können, lass das mal aber lieber ;)

// gut, adresseVonZahl weiß wo sich unsere variable zahl befindet. gehen wir doch mal dahin.
cout &lt;&lt; adresseVonZahl; // gibt 0x01 aus.
cout &lt;&lt; *adresseVonZahl; // mit * wird zu der gespeicherten Adresse gegangen, also
// wenn wir zu 0x01 gehen, sind wir bei unserer Variable zahl, also wird 5 ausgeben.
</code></pre>
<p>Soweit, so klar?</p>
<p>Machen wir jetzt ein bisschen Zeigerarithmetik:</p>
<pre><code>int a[2] = {11, 12}; // Sieht im Speicher so aus:
/* Speicher ( Adresse:Name:Wert) 
 ----------------------- 
|  1000 |  a[0]  |  11  | 
 ----------------------- 
|  1004 |  a[1]  |  12  |         
 ----------------------- 
*/ 

// Ein Integer ist bei dir vier Byte groß, also belegen wir vier Byte im Speicher. Danach kommt das nächste int.

// holen wir uns doch die Adresse von erstem Wert
int* ersteAdresse = &amp;a[0]; // hier steht nun 1000 drin. Info: Bei Arrays ist &amp;a[0] das selbe wie einfach nur a, also der Arrayname.

cout &lt;&lt; ersteAdresse &lt;&lt; &quot; &quot; &lt;&lt; *ersteAdresse; // gibt 1000 11 aus.

// wir haben ein int array, wir wissen das ints vier byte groß sind, wir wissen das arraywerte im speicher nacheinander kommen
// dann lass uns doch mal zum nächsten array wert wandern

int* zweiteAdresse = ersteAdresse + 1; // unser compiler sieht hier, wir wollen ein int-adresse weiter 
// gehen, der compiler macht dann daraus ungefähr(*):

// int* zweiteAdresse = (int)ersteAdresse + 1*sizeof(int); nehme die 1000 und addiere vier bytes drauf, um zum nächsten zu gelangen
// sizeof(int) deswegen, weil int nicht überall gleich groß ist. 

cout &lt;&lt; zweiteAdresse &lt;&lt; &quot; &quot; &lt;&lt; *zweiteAdresse; // gibt 1004 12 aus.

// wir können auch direkt mehr weiter gehen:
int* outOfSpace = ersteAdresse + 2; // achtung, da sind wir bei unserem array aber schon über die Grenze!!!

(*) Den TE bloß nicht überstrapazieren.
</code></pre>
<p>Mehr ist Zeigerarithmetik nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280875</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 17 Dec 2012 13:33:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 13:40:18 GMT]]></title><description><![CDATA[<p>@KasF<br />
Du musst auch dazuschreiben, dass die 0x01 und die 1000 nur von dir ausgedachte Beispieladressen sind.<br />
Diese Werte sind in realen Programmen ganz andere.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280881</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Mon, 17 Dec 2012 13:40:18 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 13:41:28 GMT]]></title><description><![CDATA[<p>Anwendungsbeispiel:</p>
<pre><code>int a[5] = {1,2,3,4,5};

// gebe mit hilfe der zeigerarithmetik all zahlen in a aus.

int* adresse = a; // = &amp;a[0];

cout &lt;&lt; *adresse; // 1

adresse = adresse + 1; // gehe sizeof(int) bytes weiter, also zum nächsten wert

cout &lt;&lt; *adresse; // 2

adresse = adresse + 1;
cout &lt;&lt; *adresse; // 3 , usw usf ..

// das schreit nach einer schleife:

adresse = a; // zurück zum anfang.
for(int i = 0; i &lt; 5; ++i)
{
   cout &lt;&lt; *adresse &lt;&lt; &quot; &quot;;  // ausgeben
   adressen = adresse + 1;   // und eins weiter gehen
}

das kann man ein bisschen schöner machen:
adresse = a; // zurück zum anfang.

const unsigned int arrayGroesse = sizeof(a)/sizeof(int); // ergbibt 5! die gesamt größe des arrays durch die größe eines elements teilen.

for(int i = 0; i &lt; arrayGroesse; ++i)
{
   cout &lt;&lt; *adresse &lt;&lt; &quot; &quot;;  // ausgeben
   ++adresse;   // und eins weiter gehen
}
</code></pre>
<p>Das reicht erstmals.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280882</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 17 Dec 2012 13:41:28 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 19:07:09 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Du bist kein Programmierfachprofi.<br />
Dein Beispiel ist falsch und schlecht.</p>
</blockquote>
<p>Mein Code funktioniert, die eine Warnung bei der Zeigerzuweisung kann man verschmerzen.</p>
<p>Siehe:</p>
<pre><code>#include &lt;stdio.h&gt;

int main(){
  int a[] = {1, 3};
  int *pa=&amp;a;
  pa = pa + a[0]; 

  for (int i = 0; i &lt; 2; i++){
    printf(&quot;a[%i] = %i\n&quot;, i, a[i]);
  }
  return 0;
}
</code></pre>
<p>gcc -std=c99 -Wall -o &quot;zeigerarithmetik&quot; &quot;zeigerarithmetik.c&quot; (im Verzeichnis: F:\)<br />
zeigerarithmetik.c: In function 'main':<br />
zeigerarithmetik.c:5:11: warning: initialization from incompatible pointer type [enabled by default]<br />
<strong>Kompilierung erfolgreich beendet.</strong></p>
<p>ohoh schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Du bist kein Programmierfachprofi.<br />
Dein Beispiel ist falsch und schlecht.</p>
</blockquote>
<p>Jup, sollte so heißen:</p>
<pre><code class="language-cpp">int a[] = {1, 3};
int *pa=a;
pa+=1; // oder ++pa;  &lt;--- Das ist FALSCH!
</code></pre>
</blockquote>
<p>Dein Code ist falsch.<br />
Der Threadstarter wollte mit den Werten einer Variable rechnen und nicht mit einer absoluten Zahl.<br />
Siehe dazu auch sein Verständnisproblem am Anfang, das du reingebracht hast, nachdem du mit konstanten Zahlen, anstatts mit Variablenwerten gerechnet hast.</p>
<p>Deswegen steht bei mir a[0] und den += Operator versteht ein Anfänger nicht unbedingt, deswegen sollte man es ausgeschrieben hinschreiben.<br />
richtig ist also:<br />
pa = pa + a[0];</p>
<p>so wie ich es zu Beginn schrieb.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280984</guid><dc:creator><![CDATA[Programmierfachprofi]]></dc:creator><pubDate>Mon, 17 Dec 2012 19:07:09 GMT</pubDate></item><item><title><![CDATA[Reply to Wie versteht man Zeigerarithmetik?? on Mon, 17 Dec 2012 19:15:37 GMT]]></title><description><![CDATA[<blockquote>
<p>den += Operator versteht ein Anfänger nicht unbedingt</p>
</blockquote>
<p>Du machst Scherze oder? Den sollte selbst ein absolute Anfänger ohne Probleme verstehen können.</p>
<blockquote>
<p><strong>gcc -std=c99</strong> -Wall -o &quot;zeigerarithmetik&quot; &quot;zeigerarithmetik.c&quot; (im Verzeichnis: F:\)<br />
zeigerarithmetik.<strong>c</strong>: In function 'main':<br />
zeigerarithmetik.<strong>c</strong>:5:11: warning: initialization from incompatible pointer type [enabled by default]</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Wir sind hier im C++ Forum! Was ist denn mit dir los?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280988</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 17 Dec 2012 19:15:37 GMT</pubDate></item></channel></rss>