<?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[Verständisproblem bei Zeigern]]></title><description><![CDATA[<p>Das untenstehende Programm, sortiert 3 Zahlen, dies absichtlich mit Hilfe von Funktionen und Zeigern. (Programm ist noch optimierbar) Ich verstehe leider nicht, warum es z.B. in Zeile 17 nicht</p>
<pre><code class="language-cpp">tausch(&amp;b,&amp;a);
</code></pre>
<p>heißen müßte. Schließlich erwartet die Funktion &quot;tausch&quot; doch die Adresse zweier Variablen und nicht deren Inhalt, oder?<br />
(s. dazu auch Zeile 43)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void tausch(int *wert1,int*wert2)
{
  int tmp=*wert1;
  *wert1=*wert2;
  *wert2=tmp;
};

void swab(int *a,int *b,int *c)
{
   for(;(*a&gt;*b) || (*a&gt;*c) || (*b&gt;*c);)
    {
      if(*b&lt;*a)
       {
         tausch(b,a);
       }

      if(*c&lt;*b)
       {
         tausch(c,b);
       }

      if(*c&lt;*a)
       {
         tausch(c,a);
       }
    }
};

int main()
{
    int a,b,c;
    cout&lt;&lt;&quot;Bitte geben sie den ersten Wert ein: &quot;;
    cin&gt;&gt;a;
    cout&lt;&lt;&quot;Bitte geben sie den zweiten Wert ein: &quot;;
    cin&gt;&gt;b;
    cout&lt;&lt;&quot;Bitte geben sie den dritten Wert ein: &quot;;
    cin&gt;&gt;c;
    cout&lt;&lt;&quot;Die eingegebenen Werte werden nun sortiert, bitte etwas Geduld.&quot;&lt;&lt;endl;

    swab(&amp;a,&amp;b,&amp;c);
    cout&lt;&lt;&quot;a:&quot;&lt;&lt;a&lt;&lt;endl;
    cout&lt;&lt;&quot;b:&quot;&lt;&lt;b&lt;&lt;endl;
    cout&lt;&lt;&quot;c:&quot;&lt;&lt;c&lt;&lt;endl;
    return 0;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/287551/verständisproblem-bei-zeigern</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 10:26:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287551.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 30 May 2011 19:36:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Mon, 30 May 2011 19:38:44 GMT]]></title><description><![CDATA[<p>Das untenstehende Programm, sortiert 3 Zahlen, dies absichtlich mit Hilfe von Funktionen und Zeigern. (Programm ist noch optimierbar) Ich verstehe leider nicht, warum es z.B. in Zeile 17 nicht</p>
<pre><code class="language-cpp">tausch(&amp;b,&amp;a);
</code></pre>
<p>heißen müßte. Schließlich erwartet die Funktion &quot;tausch&quot; doch die Adresse zweier Variablen und nicht deren Inhalt, oder?<br />
(s. dazu auch Zeile 43)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void tausch(int *wert1,int*wert2)
{
  int tmp=*wert1;
  *wert1=*wert2;
  *wert2=tmp;
};

void swab(int *a,int *b,int *c)
{
   for(;(*a&gt;*b) || (*a&gt;*c) || (*b&gt;*c);)
    {
      if(*b&lt;*a)
       {
         tausch(b,a);
       }

      if(*c&lt;*b)
       {
         tausch(c,b);
       }

      if(*c&lt;*a)
       {
         tausch(c,a);
       }
    }
};

int main()
{
    int a,b,c;
    cout&lt;&lt;&quot;Bitte geben sie den ersten Wert ein: &quot;;
    cin&gt;&gt;a;
    cout&lt;&lt;&quot;Bitte geben sie den zweiten Wert ein: &quot;;
    cin&gt;&gt;b;
    cout&lt;&lt;&quot;Bitte geben sie den dritten Wert ein: &quot;;
    cin&gt;&gt;c;
    cout&lt;&lt;&quot;Die eingegebenen Werte werden nun sortiert, bitte etwas Geduld.&quot;&lt;&lt;endl;

    swab(&amp;a,&amp;b,&amp;c);
    cout&lt;&lt;&quot;a:&quot;&lt;&lt;a&lt;&lt;endl;
    cout&lt;&lt;&quot;b:&quot;&lt;&lt;b&lt;&lt;endl;
    cout&lt;&lt;&quot;c:&quot;&lt;&lt;c&lt;&lt;endl;
    return 0;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2071168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071168</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Mon, 30 May 2011 19:38:44 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Mon, 30 May 2011 19:39:05 GMT]]></title><description><![CDATA[<p>redrew99 schrieb:</p>
<blockquote>
<p>Ich verstehe leider nicht, warum es z.B. in Zeile 17 nicht</p>
<pre><code class="language-cpp">tausch(&amp;b,&amp;a);
</code></pre>
<p>heißen müßte.</p>
</blockquote>
<p>Weil <code>a</code> und <code>b</code> in diesem Scope bereits vom Typ <code>int*</code> sind. Und lese dich in das Kapitel &quot;Referenzen&quot; deines Buches ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071171</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Mon, 30 May 2011 19:39:05 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Mon, 30 May 2011 19:45:41 GMT]]></title><description><![CDATA[<p><code>a</code> und <code>b</code> sind bereits Zeiger, enthalten also Adressen. Du willst ja nicht den Speicherort der Zeiger selbst.</p>
<p>P.S.: Erst jetzt aufgefallen: Normalerweise schreibt man &quot;swap&quot; und nicht &quot;swab&quot; <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/2071172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071172</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 30 May 2011 19:45:41 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Mon, 30 May 2011 19:41:38 GMT]]></title><description><![CDATA[<p>redrew99 schrieb:</p>
<blockquote>
<p>Schließlich erwartet die Funktion &quot;tausch&quot; doch die Adresse zweier Variablen und nicht deren Inhalt, oder?</p>
</blockquote>
<p>Ja, das ist richtig. Aber in a und b in Zeile 17 sind ja Adressen, denn sie sind ja</p>
<pre><code class="language-cpp">void swab(int *a,int *b,int *c)
</code></pre>
<p>so definiert und nicht etwas so</p>
<pre><code class="language-cpp">void swab(int a,int b,int *c)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2071173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071173</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 30 May 2011 19:41:38 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Tue, 31 May 2011 09:58:45 GMT]]></title><description><![CDATA[<p>Nicht zu vergessen ist, dass die STD auch Funktionen für das Austauschen ( <code>std::swap</code> aus <code>&lt;algorithm&gt;</code> ) und sogar für das Sortieren ( <code>std::sort</code> aus <code>&lt;algorithm&gt;</code> ) oder wenn die Sortierung stabil sein soll kann man auch die stabile Sortierung der STD nutzen ( <code>std::stable_sort</code> aus <code>&lt;algorithm&gt;</code> ).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071176</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 31 May 2011 09:58:45 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Mon, 30 May 2011 19:47:24 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>P.S.: Erst jetzt aufgefallen: Normalerweise schreibt man &quot;swap&quot; und nicht &quot;swab&quot; <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>
</blockquote>
<p>Die Funktion <code>swab</code> sollte <code>sort</code> heissen und die Funktion <code>tausch</code> sollte man <code>swap</code> nennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071177</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Mon, 30 May 2011 19:47:24 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Mon, 30 May 2011 19:48:41 GMT]]></title><description><![CDATA[<p>Übrigens schreibt man am Ende der Funktionsdefinition kein Semikolon!</p>
<p>PS: Sorry wegen den drei Beiträgen nacheinander.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071178</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Mon, 30 May 2011 19:48:41 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Mon, 30 May 2011 20:17:26 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Nicht zu vergessen ist, dass die STD auch Funktionen für das Austauschen ( <code>std::swap</code> aus <code>&lt;algorithm&gt;</code> ) und sogar für das Sortieren ( <code>std::sort</code> aus <code>&lt;algorithm&gt;</code> ) oder wenn die Sortierung stabil sein soll kann man auch die stabile Sortierung der STD nutzen ( <code>std::stable_swap</code> aus <code>&lt;algorithm&gt;</code> ).</p>
</blockquote>
<p>Ja, wollte ganz gerne den Umgang mit Zeigern im Zusammenhang mit Funktionen lernen, das Sortierprogramm ist da eher zufällig.</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>P.S.: Erst jetzt aufgefallen: Normalerweise schreibt man &quot;swap&quot; und nicht &quot;swab&quot;</p>
</blockquote>
<p>&quot;swab&quot; habe ich deshalb geschrieben, damit es nicht zu Verwechslungen mit der gleichnamigen, in der iostream-Bibliothek enthaltenen Funktion kommt.</p>
<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Übrigens schreibt man am Ende der Funktionsdefinition kein Semikolon!</p>
</blockquote>
<p>Ok.<br />
In dem Tutorial( <a href="http://www.c-plusplus.net/cms/modules.php?op=modload&amp;name=Downloads&amp;file=index&amp;req=getit&amp;lid=15&amp;nocache=1" rel="nofollow">http://www.c-plusplus.net/cms/modules.php?op=modload&amp;name=Downloads&amp;file=index&amp;req=getit&amp;lid=15&amp;nocache=1</a> )wird das so praktiziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071184</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Mon, 30 May 2011 20:17:26 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Mon, 30 May 2011 20:23:05 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>redrew99 schrieb:</p>
<blockquote>
<p>Ich verstehe leider nicht, warum es z.B. in Zeile 17 nicht</p>
<pre><code class="language-cpp">tausch(&amp;b,&amp;a);
</code></pre>
<p>heißen müßte.</p>
</blockquote>
<p>Weil <code>a</code> und <code>b</code> in diesem Scope bereits vom Typ <code>int*</code> sind.</p>
</blockquote>
<p>Ok,danke.</p>
<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Und lese dich in das Kapitel &quot;Referenzen&quot; deines Buches ein.</p>
</blockquote>
<p>Werde ich auf jeden Fall noch machen. In dem Tutorial wird von der Verwendung von Referenzen in diesem Zusammenhang abgeraten, deshalb habe ich Zeiger genommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071189</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Mon, 30 May 2011 20:23:05 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Mon, 30 May 2011 20:30:21 GMT]]></title><description><![CDATA[<p>redrew99 schrieb:</p>
<blockquote>
<p>&quot;swab&quot; habe ich deshalb geschrieben, damit es nicht zu Verwechslungen mit der gleichnamigen, in der iostream-Bibliothek enthaltenen Funktion kommt.</p>
</blockquote>
<p>Genau deshalb rate ich immer vor der Verwendung von &quot; <code>using namespace std;</code> ab.</p>
<p>PS: Das Tutorial ist alt. Man sieht es an folgendem Code:</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;    //Fehler 1: &lt;iostream&gt; wäre korrekt
void main()              //Fehler 2: int sollte der Rückgabewert sein
{
   int a=1;
   int &amp;ra=a;
   cout&lt;&lt;&quot;a: &quot;&lt;&lt;a&lt;&lt;endl; //Fehler 3: cout ist im Namensbereich std
   ra=2;
   cout&lt;&lt;&quot;a: &quot;&lt;&lt;a&lt;&lt;endl;
};                       //Ich denke, dass das der vierte Fehler ist aber bin mir nicht sicher
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2071193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071193</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Mon, 30 May 2011 20:30:21 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Tue, 31 May 2011 06:51:02 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Nicht zu vergessen ist, dass die STD auch Funktionen für das Austauschen ( <code>std::swap</code> aus <code>&lt;algorithm&gt;</code> ) und sogar für das Sortieren ( <code>std::sort</code> aus <code>&lt;algorithm&gt;</code> ) oder wenn die Sortierung stabil sein soll kann man auch die stabile Sortierung der STD nutzen ( <code>std::stable_swap</code> aus <code>&lt;algorithm&gt;</code> ).</p>
</blockquote>
<p>stable_swap? Du meinst sicher stable_sort.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071265</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 31 May 2011 06:51:02 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Tue, 31 May 2011 08:49:31 GMT]]></title><description><![CDATA[<p>Ich versteh, dass das eine Übung zu Zeigern ist, aber haben Zeiger in diesem konkreten Anwendungsfall Vorteile gegenüber Referenzen? Oder gibt es andere triftige Gründe, warum sie hier verwendet werden sollten?</p>
<p>Edit: die Frage ging an die Experten im Forum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071271</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Tue, 31 May 2011 08:49:31 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Tue, 31 May 2011 08:55:11 GMT]]></title><description><![CDATA[<p>@[Rewind]: Dies ist sogar ein Paradebeispiel dafür, wo man Referenzen statt Zeigern verwenden sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071320</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 31 May 2011 08:55:11 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Tue, 31 May 2011 09:59:40 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Du meinst sicher stable_sort.</p>
</blockquote>
<p>Oh man, wie peinlich. Ich habs gefixt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071351</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 31 May 2011 09:59:40 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem bei Zeigern on Tue, 31 May 2011 18:19:58 GMT]]></title><description><![CDATA[<p>Das Tutorial, wo konkret für dieses Beispiel von der Vewendung von Referenzen abgeraten wird, wird hier in diesem Forum empfohlen.</p>
<p>s. Lektion 37</p>
<p><a href="http://www.c-plusplus.net/cms/modules.php?op=modload&amp;name=Downloads&amp;file=index&amp;req=getit&amp;lid=15&amp;nocache=1" rel="nofollow">http://www.c-plusplus.net/cms/modules.php?op=modload&amp;name=Downloads&amp;file=index&amp;req=getit&amp;lid=15&amp;nocache=1</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071651</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Tue, 31 May 2011 18:19:58 GMT</pubDate></item></channel></rss>