<?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[Aufgabe mit Feldern und Zeigern]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes C Programm und verstehe es nicht ganz.</p>
<p>#include&lt;iostream.h&gt;<br />
int reti(int *p, int a)<br />
{<br />
int t = *(p+a);<br />
return ++t/2;<br />
}<br />
void main()<br />
{<br />
int i, a = 2, b = 9, *z;<br />
float c = 1.0;<br />
int v[5]={1,3,5,7,9};<br />
c += ++a + b++/2.0;<br />
cout &lt;&lt; a &lt;&lt; endl &lt;&lt; b &lt;&lt; endl &lt;&lt; c &lt;&lt; endl;<br />
z = &amp;v[0];<br />
for( i = 0; i &lt; 5; i++)<br />
cout &lt;&lt; i &lt;&lt; endl &lt;&lt; reti (z, i) &lt;&lt; endl;<br />
}</p>
<p>Zuerst wird einmal a, b, c auf dem Bildschirm ausgegebn: 3, 10, 8,5<br />
Dannach wird reti(int *p, int a) aufgerufen. Doch was dann passiert verstehe ich leider nicht. Kann mir das jemand vielleicht erklären? Wäre sehr dankbar</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/133431/aufgabe-mit-feldern-und-zeigern</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 22:39:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/133431.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Jan 2006 18:11:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Aufgabe mit Feldern und Zeigern on Tue, 17 Jan 2006 18:11:18 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes C Programm und verstehe es nicht ganz.</p>
<p>#include&lt;iostream.h&gt;<br />
int reti(int *p, int a)<br />
{<br />
int t = *(p+a);<br />
return ++t/2;<br />
}<br />
void main()<br />
{<br />
int i, a = 2, b = 9, *z;<br />
float c = 1.0;<br />
int v[5]={1,3,5,7,9};<br />
c += ++a + b++/2.0;<br />
cout &lt;&lt; a &lt;&lt; endl &lt;&lt; b &lt;&lt; endl &lt;&lt; c &lt;&lt; endl;<br />
z = &amp;v[0];<br />
for( i = 0; i &lt; 5; i++)<br />
cout &lt;&lt; i &lt;&lt; endl &lt;&lt; reti (z, i) &lt;&lt; endl;<br />
}</p>
<p>Zuerst wird einmal a, b, c auf dem Bildschirm ausgegebn: 3, 10, 8,5<br />
Dannach wird reti(int *p, int a) aufgerufen. Doch was dann passiert verstehe ich leider nicht. Kann mir das jemand vielleicht erklären? Wäre sehr dankbar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969190</guid><dc:creator><![CDATA[Martinho84]]></dc:creator><pubDate>Tue, 17 Jan 2006 18:11:18 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe mit Feldern und Zeigern on Tue, 17 Jan 2006 18:26:52 GMT]]></title><description><![CDATA[<p>Martinho84 schrieb:</p>
<blockquote>
<p>Zuerst wird einmal a, b, c auf dem Bildschirm ausgegebn: 3, 10, 8,5</p>
</blockquote>
<p>Zuvor werden allerdings allerhand Bezeichner definiert (und tlw. auch initialisiert).</p>
<blockquote>
<p>Dannach wird reti(int *p, int a) aufgerufen.</p>
</blockquote>
<p>Das passiert doch erst ganz am Schluss <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="😕"
    /> Dazwischen geschieht ebenfalls noch etwas.</p>
<blockquote>
<p>Doch was dann passiert verstehe ich leider nicht. Kann mir das jemand vielleicht erklären? Wäre sehr dankbar</p>
</blockquote>
<p>Was verstehst du denn konkret nicht? Da es sich hierbei um die wirklich elementaren Grundlagen handelt, empfehle ich ein Buch/Tutorial deiner Wahl noch einmal durchzusehen.</p>
<p>Gruß Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969200</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Tue, 17 Jan 2006 18:26:52 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe mit Feldern und Zeigern on Tue, 17 Jan 2006 19:10:43 GMT]]></title><description><![CDATA[<p>Die for Schleife verstehe ich auch noch. Also er gibt i und dann reti(z, i) aus. Nur was macht er in diesem Teil ? bzw. Wie kommt man drauf was reti(z, i) ist ?</p>
<p>int reti(int *p, int a)<br />
{<br />
int t = *(p+a);<br />
return ++t/2;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969239</guid><dc:creator><![CDATA[Martinho84]]></dc:creator><pubDate>Tue, 17 Jan 2006 19:10:43 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe mit Feldern und Zeigern on Tue, 17 Jan 2006 19:24:13 GMT]]></title><description><![CDATA[<p>Martinho84 schrieb:</p>
<blockquote>
<p>Die for Schleife verstehe ich auch noch. Also er gibt i und dann reti(z, i) aus. Nur was macht er in diesem Teil ? bzw. Wie kommt man drauf was reti(z, i) ist ?</p>
</blockquote>
<p>Die for-Schleife wird 5mal durchlaufen. Bei jedem Schleifen-durchlauf wird die Funktion reti() mit dem Argument z (einem Zeiger auf das erste Element des Arrays v) und dem aktuellen Zähler i, der nach jedem Schleifendurchlauf erhöht wird, aufgerufen.</p>
<p>Die Paramter der Funktion reti(), also int* p und int a, speichern die übergebenen Argumente. D.h. p speichert den Wert von z (die Adresse an welcher das Array v beginnt) und a speichert den Wert von i.</p>
<p>In der Funktion reti() wird nun eine Variable vom Typ int t initialisiert. Sie erhält den Wert, der an der Anfangsadresse des Arrays v (die Adresse steht in p) + dem Wert i (der den Wertebereich zwischen 0 und 4 annehmen kann) steht.<br />
Der Ausdruck <em>(p + i) besagt allgemein: Gehe zur Adresse, die in p steht, addiere den Wert von i hinzu (bzw. genauer i</em>sizeof(int), aber das macht der Compiler automatisch) und gebe den Wert, der an dieser Stelle des Speichers steht, zurück. (Dieser wird dann in t gespeichert).</p>
<p>Gruß Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969252</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Tue, 17 Jan 2006 19:24:13 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe mit Feldern und Zeigern on Tue, 17 Jan 2006 19:24:04 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Es tut mir leid, dass ich mit dem Mist nerve, aber du solltest statt</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
</code></pre>
<p>doch lieber</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;
</code></pre>
<p>benutzen</p>
<p>Außerdem heisst es:</p>
<pre><code class="language-cpp">int main()
{
return 0;
}
</code></pre>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969254</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 17 Jan 2006 19:24:04 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe mit Feldern und Zeigern on Wed, 18 Jan 2006 11:42:13 GMT]]></title><description><![CDATA[<p>Soweit habe ich das jetzt auch verstanden. Nur irgendwie komme ich nicht auf die richtige Ausgabe.<br />
Gehen wir mal die Schleife durch. Beim ersten Schleifendurchlauf wird i = a = 0 und z = p = 1. Dann int t = (0+1) dann ++t/2. Das ergibt dann eine 1.</p>
<p>Im nächsten Schleifendurchlauf ist i = a = 1 und z = p = 3. Dann ist int t= (3+1) dann ++t/2. Das ergibt dann eine 2.5 aber da int = 2</p>
<p>Im daraufflogenden Schleifendurchlaf ist i = a = 2 und z = p = 5. Dann ist int t = (2+5) dann ++t/2. Das ergibt dann 4. Und das wäre ja falsch.</p>
<p>Was mache ich denn bei der Berechnung falsch ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969638</guid><dc:creator><![CDATA[Martinho]]></dc:creator><pubDate>Wed, 18 Jan 2006 11:42:13 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe mit Feldern und Zeigern on Wed, 18 Jan 2006 12:58:57 GMT]]></title><description><![CDATA[<p>Martinho schrieb:</p>
<blockquote>
<p>Gehen wir mal die Schleife durch. Beim ersten Schleifendurchlauf wird i = a = 0 und z = p = 1. Dann int t = (0+1) dann ++t/2. Das ergibt dann eine 1.</p>
</blockquote>
<p>Hier gehts schon los. z = p ist nicht 1, sondern die Adresse wo 1 in v steht.</p>
<p>Hast Du Dich schon etwas ausführlicher mit Zeigern und Zeigerarithmetik (auch der Wert in Klammern ist nicht (0+1) sondern WertAn(AdresseVon(v) + 1) ) auseinandergesetzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969698</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 18 Jan 2006 12:58:57 GMT</pubDate></item></channel></rss>