<?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[Mal &amp;amp;, mal *]]></title><description><![CDATA[<p>Ich weiß was Referenzen, Zeiger usw sind, aber ich bin noch nicht so drin.</p>
<p>Wir haben in den Vorlesungen immer Beispielcode, der mich ein wenig verwirrt.</p>
<p>Einmal ging es um das Thema pass-by-reference und die Methodensignatur sah ungefähr so aus:</p>
<pre><code class="language-cpp">void methode(int* value){
*value = 5;
}
</code></pre>
<p>Ist klar, der Aufruf der Methode sieht dann irgendwie so aus</p>
<pre><code class="language-cpp">int i = 6;
methode(&amp;i);
</code></pre>
<p>Referenz gibt Adresse von i und Methode nimmt diese Adresse und behandelt das als Zeiger, was ich wundert, warum steht da noch *value = 5 ? Ändere ich so nicht den Pointer selbst (also die Adresse) und nicht den Wert des integers?</p>
<p>Später haben wir dann Copy Constructor gehabt, dort sieht der Kopf so aus:</p>
<pre><code class="language-cpp">Obj (Obj &amp;r);
</code></pre>
<p>Und der Aufruf</p>
<pre><code class="language-cpp">Obj o = Obj(andererObj);
</code></pre>
<p>Ehm, warum wird mal Poiter genommen und Adresse übergeben und mal wird eine Referenz erwartet? Hat das was mit den komplexen Datentypen wie eigenen Klassen im Vergleich zu int,bool usw zutun? Würd ich pass-by-reference einer Variable vom Typ Obj die Methode oben auch so nutzen:</p>
<pre><code class="language-cpp">void methode(Obj &amp;value)
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/193271/mal-amp-mal</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 22:18:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193271.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Sep 2007 14:19:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 14:19:41 GMT]]></title><description><![CDATA[<p>Ich weiß was Referenzen, Zeiger usw sind, aber ich bin noch nicht so drin.</p>
<p>Wir haben in den Vorlesungen immer Beispielcode, der mich ein wenig verwirrt.</p>
<p>Einmal ging es um das Thema pass-by-reference und die Methodensignatur sah ungefähr so aus:</p>
<pre><code class="language-cpp">void methode(int* value){
*value = 5;
}
</code></pre>
<p>Ist klar, der Aufruf der Methode sieht dann irgendwie so aus</p>
<pre><code class="language-cpp">int i = 6;
methode(&amp;i);
</code></pre>
<p>Referenz gibt Adresse von i und Methode nimmt diese Adresse und behandelt das als Zeiger, was ich wundert, warum steht da noch *value = 5 ? Ändere ich so nicht den Pointer selbst (also die Adresse) und nicht den Wert des integers?</p>
<p>Später haben wir dann Copy Constructor gehabt, dort sieht der Kopf so aus:</p>
<pre><code class="language-cpp">Obj (Obj &amp;r);
</code></pre>
<p>Und der Aufruf</p>
<pre><code class="language-cpp">Obj o = Obj(andererObj);
</code></pre>
<p>Ehm, warum wird mal Poiter genommen und Adresse übergeben und mal wird eine Referenz erwartet? Hat das was mit den komplexen Datentypen wie eigenen Klassen im Vergleich zu int,bool usw zutun? Würd ich pass-by-reference einer Variable vom Typ Obj die Methode oben auch so nutzen:</p>
<pre><code class="language-cpp">void methode(Obj &amp;value)
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371671</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Mon, 24 Sep 2007 14:19:41 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 14:24:25 GMT]]></title><description><![CDATA[<p>Technisch gesehen unterscheiden sich Referenzen und Zeiger nicht sehr weit, aber:</p>
<ul>
<li>Zeiger können auch als der Anfang eines Arrays angesehen werden (Adressarithmetik für Referenzen gibt's nicht)</li>
<li>Zeiger können auch auf NULL verweisen</li>
<li>Zeiger sind auch in C bekannt (wichtig für Bibliotheken, die aus C übernommen wurden)</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/1371674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371674</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 24 Sep 2007 14:24:25 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 14:25:27 GMT]]></title><description><![CDATA[<p>Also läufts auf ein Mischmasch hinaus? Nichtwahr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371675</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Mon, 24 Sep 2007 14:25:27 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 14:29:48 GMT]]></title><description><![CDATA[<p>Seikilos schrieb:</p>
<blockquote>
<p>...warum wird mal Poiter genommen und Adresse übergeben und mal wird eine Referenz erwartet? ...</p>
</blockquote>
<p>Na - warum wird mal ein int, mal ein double mal ein string übergeben ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
C++ hat halt 2 &quot;Typen von Verweisen&quot;: s. CStolls Erklärung.</p>
<p>Seikilos schrieb:</p>
<blockquote>
<p>...Hat das was mit den komplexen Datentypen wie eigenen Klassen im Vergleich zu int,bool usw zutun? ...</p>
</blockquote>
<p>Nicht, dass ich wüsste (Evtl. gemeint: Call-by-value &quot;kostet&quot; bei komplexen Datentypen Performance ... aber für call-by-references, um die es hier geht, spielt das keine Rolle).</p>
<p>Seikilos schrieb:</p>
<blockquote>
<p>...Würd ich pass-by-reference einer Variable vom Typ Obj die Methode oben auch so nutzen:</p>
<pre><code class="language-cpp">void methode(Obj &amp;value)
</code></pre>
<p>?</p>
</blockquote>
<p>Jupp - Und aufgerufen via:</p>
<pre><code class="language-cpp">Obj myThing;
methode(myThing);
</code></pre>
<p>Seikilos schrieb:</p>
<blockquote>
<p>Also läufts auf ein Mischmasch hinaus? Nichtwahr?</p>
</blockquote>
<p><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="😕"
    /><br />
Genauso wie es mit int und string &quot;auf ein Mischmasch hinaisläuft&quot; : Man nimmt das, was passt.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371679</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 24 Sep 2007 14:29:48 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 14:29:23 GMT]]></title><description><![CDATA[<p>Hem, also was heißt mischmasch? Die zwei haben unterschiedliche Fähigkeiten und Überschneidungen darin. Aber im Prinzip kann man schon sagen, wann man was benutzt.</p>
<p>Pointer sind aber unerlässlich, wenn man C-Funktionen ansprechen will, weil C keine Referenzen kennt. Das dürfte der größte &quot;Knackpunkt&quot; sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371682</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 24 Sep 2007 14:29:23 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 14:33:53 GMT]]></title><description><![CDATA[<p>Ok, jetzt ist es mir klar, ich war nur verwundert, weil bei CopyConstructor eine Referenz verwendet wurde und bei primitiven Datentypen Pointer und das wortlos, da kann man ja sonst was interpretieren, dass bei Constructoren dies geht, bei den anderen jenes.<br />
Ist halt schlecht kommentiert <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=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371692</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Mon, 24 Sep 2007 14:33:53 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 14:36:46 GMT]]></title><description><![CDATA[<p>Ein anderes Beispiel aus der Operator Überladung.<br />
Man hat eine Klasse Point und überlädt +=, nun steht da die Methode</p>
<pre><code class="language-cpp">Point Point::operator+=(Point &amp;p){

// tu was
return *this;

}
</code></pre>
<p>Ist das ein Fehler? Muss der Returnwert nicht *Point sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371696</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Mon, 24 Sep 2007 14:36:46 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 14:40:18 GMT]]></title><description><![CDATA[<p>Und dein Beispiel oben:</p>
<pre><code class="language-cpp">void methode(int* value){
*value = 5;
}
</code></pre>
<p>könnte man auch mit einer Refernz machen! Dann spart man sich auch das sog. Dereferenzieren.</p>
<pre><code class="language-cpp">void foo(int&amp; dest)
{ dest *= 5; }
</code></pre>
<p>So kannst du sichergehen, dass dest kein NULL-Zeiger odg. ist, wie es bei der Zeiger-Variante sein könnte usw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371701</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 24 Sep 2007 14:40:18 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 14:41:27 GMT]]></title><description><![CDATA[<p>So wäre es optimal:</p>
<pre><code class="language-cpp">Point&amp; Point::operator+=(const Point &amp;p){

// tu was
return *this;

}
</code></pre>
<p>Einen Pointer kannste nicht zurück geben, weil dann sowas nicht funktioineren würde:</p>
<pre><code class="language-cpp">Point p = p1 + p2 + p3;
</code></pre>
<p>Wenn du einen Pointer zurück geben würdest, müsste p und p1 auch ein Pointer sein. Wäre ziemlich umständlich... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371702</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 24 Sep 2007 14:41:27 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 14:44:18 GMT]]></title><description><![CDATA[<p>Am besten folgenden Satz merken:<br />
<em>Referenzen sind Aliasnamen für bestehende Variablen.</em></p>
<p>Das ist bei Pointern nicht so. Pointer sind eigene Variablen die eine Adresse auf eine bestehende Variable speichern. Also insgesamt alles umständlicher.</p>
<pre><code class="language-cpp">int a = 0;
int &amp;r = a;  // r ist a!!!
int *p = &amp;a; // p ist nicht a! Es zeigt auf a!
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1371707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371707</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 24 Sep 2007 14:44:18 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 14:46:34 GMT]]></title><description><![CDATA[<p>Seikilos schrieb:</p>
<blockquote>
<p>...Muss der Returnwert nicht *Point sein?</p>
</blockquote>
<p>*Point ist kein Typ.</p>
<p>&quot;this&quot; hat (ziemlich sicher in diesem Beispiel) den Typ &quot;Point*&quot; (Also: Zeiger auf Point).<br />
&quot;*this&quot; hat also den Typ &quot;Point&quot;.</p>
<p>Ergo: Alles OK.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371710</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 24 Sep 2007 14:46:34 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 16:40:09 GMT]]></title><description><![CDATA[<p>ich finds auch etwas komisch, dass man da zwei verschiedene Methoden für die gleiche sache verwenden kann, und damit ordendlich chaos erstellen kann.</p>
<p>Seikilos schrieb:</p>
<blockquote>
<p>Einmal ging es um das Thema pass-by-reference und die Methodensignatur sah ungefähr so aus:</p>
<pre><code class="language-cpp">void methode(int* value){
*value = 5;
}
</code></pre>
<p>Ist klar, der Aufruf der Methode sieht dann irgendwie so aus</p>
<pre><code class="language-cpp">int i = 6;
methode(&amp;i);
</code></pre>
</blockquote>
<p>das ist übrigens call by value, denn der Datentyp ist int*, und die methode bekommt eine Kopie von dem Pointer <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="😮"
    /> . Übrigens kann man in C++ auch referenzen auf pointer verteilen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371784</guid><dc:creator><![CDATA[Krux]]></dc:creator><pubDate>Mon, 24 Sep 2007 16:40:09 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 17:51:17 GMT]]></title><description><![CDATA[<p>Ja, aber ändern tu ich doch den Wert des ints, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371845</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Mon, 24 Sep 2007 17:51:17 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 20:19:28 GMT]]></title><description><![CDATA[<p>Jap, wie gesagt der Zeiger wird ja per Call-by-Value übergeben, den kannst du folglich garnicht ändern (nur die interne Kopie). Das, worauf er zeigt, kannst du natürlich verändern (und tust du auch in dem Beispiel).</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371968</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Mon, 24 Sep 2007 20:19:28 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 21:20:46 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10404">@Seikilos</a>: Probier mal:</p>
<pre><code class="language-cpp">void new_array(int* arr, std::size_t size)
{
    delete [] arr;
    arr = new int[size];
}

int main()
{
    int* arr = new int[10];
    new_array(arr, 11);
}
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1372003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1372003</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 24 Sep 2007 21:20:46 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 21:23:52 GMT]]></title><description><![CDATA[<p>Was bitte soll ich bezüglich dieses Codes probieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1372004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1372004</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Mon, 24 Sep 2007 21:23:52 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 21:52:42 GMT]]></title><description><![CDATA[<p>Hmm geh mal mitm debugger durch und vergleich arr vor und nach dem Funktionsaufurf ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1372015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1372015</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 24 Sep 2007 21:52:42 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Mon, 24 Sep 2007 22:12:04 GMT]]></title><description><![CDATA[<p>Seikilos schrieb:</p>
<blockquote>
<p>Was bitte soll ich bezüglich dieses Codes probieren?</p>
</blockquote>
<p>ich glaub er möchte, das du feststellst, das das so nicht funktioniert, wie es soll, denn die Adresse des von new_array erstellten arrays ist mit dem ende der Methode verloren, weil der Pointer selbst nur als kopie übergeben wurde, also änderungen an diesem haben keinerlei auswirkungen auf das Original.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1372021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1372021</guid><dc:creator><![CDATA[Krux]]></dc:creator><pubDate>Mon, 24 Sep 2007 22:12:04 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Tue, 25 Sep 2007 08:47:46 GMT]]></title><description><![CDATA[<p>Krux schrieb:</p>
<blockquote>
<p>...</p>
<p>Seikilos schrieb:</p>
<blockquote>
<p>Einmal ging es um das Thema pass-by-reference und die Methodensignatur sah ungefähr so aus:</p>
<pre><code class="language-cpp">void methode(int* value){
*value = 5;
}
</code></pre>
<p>...</p>
</blockquote>
<p>Don06 schrieb:</p>
<blockquote>
<p>Jap, wie gesagt der Zeiger wird ja per Call-by-Value übergeben, ...</p>
</blockquote>
<p>das ist übrigens call by value, denn der Datentyp ist int*, und die methode bekommt eine Kopie von dem Pointer <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="😮"
    /> ...</p>
</blockquote>
<p>Das ist nicht so eindeutig. Diese &quot;call-by-pointer-value&quot;-Argumentation haben sich die Javaisten zurechtgelegt, um ihr Weltbild einfach zu halten, in C++ würde ich das als call-by-reference bezeichnen, weil das fachliche Objekt, mit dem man arbeiten möchte, nicht der Pointer, sondern das int ist.</p>
<p>Wir haben hier schon 1000 Seiten über die &quot;call-by-&quot;-Begriffe diskutiert und sind letztlich zu keinem Ergebnis gekommen. Letztlich sind das theoretische Konstrukte, die der Realität in der Praxis mehr oder minder eindeutig zugeordnet werden können.</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
void f(T i) {  // call-by-value ? call-by-reference ?
   i = (T) 0xABCDEF;
}
struct MyClass {
   MyClass(int i) {}
};

void g(int i) { // call-by-value ? call-by-reference ?
   MyClass* p = reinterpret_cast&lt;MyClass*&gt;(i); *p = 3;
}

int main() {
   int i=0;
   int* pi = &amp;i;
   int&amp; ri = i;

   f(i);
   f(pi);
   f(ri);

   g(0xABCDEF);
   return 0;
}
</code></pre>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1372161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1372161</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 25 Sep 2007 08:47:46 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Tue, 25 Sep 2007 08:50:06 GMT]]></title><description><![CDATA[<p>Hm je mehr Code gepostet wird, desto mehr verwirrt mich das.<br />
Ich muss Freitag ne 4 Stunden Klausur über Theorie schreiben.<br />
Bei Devils code müsste die Signatur ein int **arr nehmen, richtig?</p>
<p>Und aufrufen mit &amp;arr um die Referenz und keine Kopie zu erzeugen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1372173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1372173</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Tue, 25 Sep 2007 08:50:06 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Tue, 25 Sep 2007 09:11:01 GMT]]></title><description><![CDATA[<p>Seikilos schrieb:</p>
<blockquote>
<p>...<br />
Bei Devils code müsste die Signatur ein int **arr nehmen, richtig?...</p>
</blockquote>
<p>Oder einfach ein int*&amp; arr....</p>
<p>Dies ist eben ein Beispiel, wo das fachliche Objekt wirklich der Pointer ist - schließlich geht es hier um Speicherverwaltung (im Prinzip ist es sogar egal, auf welche Objekte hier gezeigt wird), weswegen ich das durchaus als &quot;call-by-value&quot; bezeichen würde.<br />
Die C++-Syntax ist hier in dieser Richtung nicht eindeutig (bei Pointern) - anders herum aber schon:<br />
&quot;Signatur einer Funktion, die einen optionalen Verweis (call-by-reference) auf ein int entgegennimmt&quot; : <code>void f(int*);</code><br />
&quot;Signatur einer Funktion, die einen int-Pointer (call-by-value) entgegennimmt&quot; : <code>void f(int*);</code><br />
<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="😃"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1372197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1372197</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 25 Sep 2007 09:11:01 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Tue, 25 Sep 2007 09:12:52 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Die C++-Syntax ist hier in dieser Richtung nicht eindeutig (bei Pointern) - anders herum aber schon:<br />
&quot;Signatur einer Funktion, die einen optionalen Verweis (call-by-reference) auf ein int entgegennimmt&quot; : <code>void f(int*);</code><br />
&quot;Signatur einer Funktion, die einen int-Pointer (call-by-value) entgegennimmt&quot; : <code>void f(int*);</code><br />
<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="😃"
    /></p>
</blockquote>
<p>...ööh</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1372199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1372199</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Tue, 25 Sep 2007 09:12:52 GMT</pubDate></item><item><title><![CDATA[Reply to Mal &amp;amp;, mal * on Tue, 25 Sep 2007 09:19:46 GMT]]></title><description><![CDATA[<p>Seikilos schrieb:</p>
<blockquote>
<p>...<br />
...ööh</p>
</blockquote>
<p>Probleme ?<br />
so ist das eben mit &quot;nicht-bijektiven Abbildungen&quot;: Zwei unterschiedliche Ausgangspunkte werden auf dasselbe Ergebnis abgebildet...<br />
Aber tröste Dich: Es gibt auch eindeutige Zuordnungen:<br />
&quot;Signatur einer Funktion, die einen verpflichtenden Verweis (call-by-ref) auf ein int entgegennimmt: void f(int&amp;);&quot;<br />
&quot;Signatur einer Funktion, die ein int (call-by-val) entgegennimmt: void f(int);&quot;</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1372204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1372204</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 25 Sep 2007 09:19:46 GMT</pubDate></item></channel></rss>