<?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 als Parameter... Verständnissproblem]]></title><description><![CDATA[<p>Hallo,</p>
<p>wennn ich Zeigeer programmiere dann ist...</p>
<pre><code class="language-cpp">int x;  //variable x!
 int *ptr = NULL ; //zeiger auf einen int.
</code></pre>
<p>also x hat ja eine Adresse und einen Wert</p>
<pre><code class="language-cpp">x=3;
</code></pre>
<p>ich hslt nur den Bezeichner x zur Verfügung um den Wert zu ändern, aber mit einem Zeiger geht das auch indirekt</p>
<pre><code class="language-cpp">ptr = &amp;x; // jetzt hat ptr die Adresse
</code></pre>
<p>also ein Zeiger speichert keinen Wert sondern Adressen!!!!<br />
dann kann aso von x der Wert geändert werden...</p>
<pre><code class="language-cpp">*ptr= 19;
</code></pre>
<p>Ok, nun die Funktion (ein Beispiel)</p>
<pre><code class="language-cpp">swap(int* a, int* b);
</code></pre>
<p>Aufruf:</p>
<pre><code class="language-cpp">int x,y;
swap(&amp;x, &amp;y);
</code></pre>
<p>Würde man keine Zeiger übergeben, dann würden von den originalen Kopien erstellt und mit denen gearbeitet.</p>
<p>Originale : x,y<br />
Kopien ;a,b</p>
<p>mit den Zeigern werden zwar immer noch Kopien angelegt, aber die beinhalten keine Werte, sondern Adressen!! Somit werden also die Originale verändert.</p>
<p>Ich stelle mir das so vor: <em><em>int</em> a = &amp;x;</em>* und <em><em>int</em> b = &amp;y;</em>*</p>
<p>jetzt kann ich aber auch sowas machen....</p>
<pre><code class="language-cpp">swap(int &amp;a, int &amp;b);

//Aufruf

int x,y;
swap (x,y);
</code></pre>
<p>Wie kann ich mir das den vorstellen????</p>
<p><strong>x = &amp;a;</strong> ?????</p>
<p>Kann mich da jemand auf den Pfad der Erleuchtung bringen?</p>
<p>Gruß<br />
Franky</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271616/zeiger-als-parameter-verständnissproblem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 10:20:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271616.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 31 Jul 2010 23:14:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger als Parameter... Verständnissproblem on Sat, 31 Jul 2010 23:14:06 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wennn ich Zeigeer programmiere dann ist...</p>
<pre><code class="language-cpp">int x;  //variable x!
 int *ptr = NULL ; //zeiger auf einen int.
</code></pre>
<p>also x hat ja eine Adresse und einen Wert</p>
<pre><code class="language-cpp">x=3;
</code></pre>
<p>ich hslt nur den Bezeichner x zur Verfügung um den Wert zu ändern, aber mit einem Zeiger geht das auch indirekt</p>
<pre><code class="language-cpp">ptr = &amp;x; // jetzt hat ptr die Adresse
</code></pre>
<p>also ein Zeiger speichert keinen Wert sondern Adressen!!!!<br />
dann kann aso von x der Wert geändert werden...</p>
<pre><code class="language-cpp">*ptr= 19;
</code></pre>
<p>Ok, nun die Funktion (ein Beispiel)</p>
<pre><code class="language-cpp">swap(int* a, int* b);
</code></pre>
<p>Aufruf:</p>
<pre><code class="language-cpp">int x,y;
swap(&amp;x, &amp;y);
</code></pre>
<p>Würde man keine Zeiger übergeben, dann würden von den originalen Kopien erstellt und mit denen gearbeitet.</p>
<p>Originale : x,y<br />
Kopien ;a,b</p>
<p>mit den Zeigern werden zwar immer noch Kopien angelegt, aber die beinhalten keine Werte, sondern Adressen!! Somit werden also die Originale verändert.</p>
<p>Ich stelle mir das so vor: <em><em>int</em> a = &amp;x;</em>* und <em><em>int</em> b = &amp;y;</em>*</p>
<p>jetzt kann ich aber auch sowas machen....</p>
<pre><code class="language-cpp">swap(int &amp;a, int &amp;b);

//Aufruf

int x,y;
swap (x,y);
</code></pre>
<p>Wie kann ich mir das den vorstellen????</p>
<p><strong>x = &amp;a;</strong> ?????</p>
<p>Kann mich da jemand auf den Pfad der Erleuchtung bringen?</p>
<p>Gruß<br />
Franky</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1934585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934585</guid><dc:creator><![CDATA[FrankTheFox]]></dc:creator><pubDate>Sat, 31 Jul 2010 23:14:06 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Parameter... Verständnissproblem on Sat, 31 Jul 2010 23:43:09 GMT]]></title><description><![CDATA[<p>Kuck dir mal das Thema Referenzen an.</p>
<p>Das &amp;-Zeichen in der Funktion steht nämlich für eine Referenz.<br />
Referenzen sind quasi nachdem sie einmal initialisiert wurden unveränderbare<br />
Zeiger, die nicht 0 werden können. Deswegen brauch man sie nicht<br />
explizit dereferenzieren, wie du im folgenden Beispiel siehst:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;

int main() {
        int i=2;
        int&amp; j = i;
        j = 3;
        std::cout &lt;&lt; i &lt;&lt; std::endl;
        return 0;
}
</code></pre>
<blockquote>
<p>3</p>
</blockquote>
<p>Du greifst also auf das Objekt zu ohne den 'Zeiger' dereferenzieren zu brauchen.</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1934588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934588</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sat, 31 Jul 2010 23:43:09 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Parameter... Verständnissproblem on Sun, 01 Aug 2010 00:33:07 GMT]]></title><description><![CDATA[<p>Ok,</p>
<p>danke für die Antwort. Wenn ich das richtig sehe, dann muß die <strong>Referenz</strong> schon während der Dekalration an die Variable gebunden sein...</p>
<p>XSpille schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int&amp; j = i;
</code></pre>
</blockquote>
<p>Sowas wie bei gewöhnlichen Zeigern</p>
<pre><code class="language-cpp">int i;
int j;
 &amp;j = i; //Murks
</code></pre>
<p>geht nicht. Ist die Referenz einmal gebunden, kann sie auch nicht mehr getrennt werden, also umgehängt.</p>
<p>Deswegen ist also auch</p>
<pre><code class="language-cpp">int const&amp;
</code></pre>
<p>äquivalent zu</p>
<pre><code class="language-cpp">const int&amp;
</code></pre>
<p>also kann ich mir das dann so vorstellen:</p>
<p><strong>int &amp;a = x;</strong><br />
Gruß<br />
Franky</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1934595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934595</guid><dc:creator><![CDATA[FrankTheFox]]></dc:creator><pubDate>Sun, 01 Aug 2010 00:33:07 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Parameter... Verständnissproblem on Sun, 01 Aug 2010 00:41:37 GMT]]></title><description><![CDATA[<p>FrankTheFox schrieb:</p>
<blockquote>
<p>danke für die Antwort. Wenn ich das richtig sehe, dann muß die <strong>Referenz</strong> schon während der Dekalration an die Variable gebunden sein...</p>
</blockquote>
<p>Nein, aber bei der Initialisierung. Ist zwar manchmal gleichzeitig, aber nicht immer. Z.B. In Klassen oder bei der Benutzung von <code>extern</code> .</p>
<p>FrankTheFox schrieb:</p>
<blockquote>
<p>Ist die Referenz einmal gebunden, kann sie auch nicht mehr getrennt werden, also umgehängt.</p>
</blockquote>
<p>Korrekt.</p>
<p>FrankTheFox schrieb:</p>
<blockquote>
<p>Deswegen ist also auch</p>
<pre><code class="language-cpp">int const&amp;
</code></pre>
<p>äquivalent zu</p>
<pre><code class="language-cpp">const int&amp;
</code></pre>
</blockquote>
<p>Nein, nicht deswegen. Das hat damit nichts zu tun. Die Äquivalenz besteht aus dem gleichen Grund wie hier:</p>
<pre><code class="language-cpp">const int
int const
</code></pre>
<p>FrankTheFox schrieb:</p>
<blockquote>
<p>also kann ich mir das dann so vorstellen:<br />
<strong>int &amp;a = x;</strong></p>
</blockquote>
<p>Ich weiss jetzt nicht, <em>was</em> du dir hier vorstellst, aber so kannst du es schreiben, ja. Auch wenn ich persönlich das &amp; beim Typ und nicht bei der Variable hinsetze.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1934599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934599</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 01 Aug 2010 00:41:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Parameter... Verständnissproblem on Sun, 01 Aug 2010 16:50:06 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe derzeit noch mal die Anregungen durchgearbeitet.</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>FrankTheFox schrieb:</p>
<blockquote>
<p>danke für die Antwort. Wenn ich das richtig sehe, dann muß die <strong>Referenz</strong> schon während der Dekalration an die Variable gebunden sein...</p>
</blockquote>
<p>Nein, aber bei der Initialisierung. Ist zwar manchmal gleichzeitig, aber nicht immer. Z.B. In Klassen oder bei der Benutzung von <code>extern</code> .</p>
</blockquote>
<p>Ja, wenn ich sowas mache</p>
<pre><code class="language-cpp">int y;
 int &amp;x = y;  //1.)
</code></pre>
<p>dann muß ich diese Zeile so umsetzten, aber z.B. in Klassen</p>
<p>geht das auch so...</p>
<pre><code class="language-cpp">class MyClass {

 MyReference&amp; m_reference; //2.)

public:

 MyClass( MyReference&amp; reference ) :
  m_reference( reference ) {}    

};
</code></pre>
<p><strong>2.)</strong> Hier erfolgt erst eine Deklaration, dann im Konstruktor eine Initialisation.<br />
<strong>1.)</strong> Hier deklaration und dann sofort init (ausser mit extern) läßt sich das nicht trennen. In einer Klasse läßt sich das so auch in zwei Schrtten machen</p>
<p>FrankTheFox schrieb:</p>
<blockquote>
<p>Deswegen ist also auch</p>
<pre><code class="language-cpp">int const&amp;
</code></pre>
<p>äquivalent zu</p>
<pre><code class="language-cpp">const int&amp;
</code></pre>
</blockquote>
<p>Nein, nicht deswegen. Das hat damit nichts zu tun. Die Äquivalenz besteht aus dem gleichen Grund wie hier:</p>
<pre><code class="language-cpp">const int
int const
</code></pre>
<p>Ja, stimmt. Da habe ich nicht nachgedacht...</p>
<p>Ich denke so ist es jetzt klarer! Danke!</p>
<p>Gruß<br />
Franky</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1934798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934798</guid><dc:creator><![CDATA[FrankTheFox]]></dc:creator><pubDate>Sun, 01 Aug 2010 16:50:06 GMT</pubDate></item></channel></rss>