<?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ändniss frage zu Zeigern]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich bin gerade dabei c++ zu lernen und vorab es macht mir viel Spass <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="🙂"
    /> nur ich habe noch des öfteren Probleme wenn ich zb. Beispiele oder tuts lese. Da sehe ich immer das manche so ihre Zeiger anlegen</p>
<p>nur als beispiel:</p>
<pre><code class="language-cpp">Typ* pZeiger
</code></pre>
<p>jetzt meine Frage dazu. Ich habe in meinen Büchern immer nur solche Statements zum anlegen von Zeigern gesehen</p>
<pre><code class="language-cpp">Typ *pZeiger
</code></pre>
<p>was ist den da der Unterschied ? Ist das ein Problem wenn ich das falsch mache? Wie weip ich ob ich den Stern vorne oder hinten schreiben muss ?</p>
<p>lg<br />
Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/270463/verständniss-frage-zu-zeigern</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 04:43:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/270463.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Jul 2010 07:48:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 07:48:31 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich bin gerade dabei c++ zu lernen und vorab es macht mir viel Spass <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="🙂"
    /> nur ich habe noch des öfteren Probleme wenn ich zb. Beispiele oder tuts lese. Da sehe ich immer das manche so ihre Zeiger anlegen</p>
<p>nur als beispiel:</p>
<pre><code class="language-cpp">Typ* pZeiger
</code></pre>
<p>jetzt meine Frage dazu. Ich habe in meinen Büchern immer nur solche Statements zum anlegen von Zeigern gesehen</p>
<pre><code class="language-cpp">Typ *pZeiger
</code></pre>
<p>was ist den da der Unterschied ? Ist das ein Problem wenn ich das falsch mache? Wie weip ich ob ich den Stern vorne oder hinten schreiben muss ?</p>
<p>lg<br />
Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925375</guid><dc:creator><![CDATA[CodeBase]]></dc:creator><pubDate>Tue, 13 Jul 2010 07:48:31 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 07:52:50 GMT]]></title><description><![CDATA[<p>Es gibt keinen inhaltlichen Unterschied -&gt; Geschmacksache...</p>
<p>Ich mal gelesen, dass dies eher C++ Style ist:</p>
<pre><code class="language-cpp">Typ* pZeiger
</code></pre>
<p>während das C Style ist</p>
<pre><code class="language-cpp">Typ *pZeiger
</code></pre>
<p>Frag mich nicht warum...<br />
(Kann auch sein, dass ich es genau vertauscht habe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925379</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 13 Jul 2010 07:52:50 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 07:57:54 GMT]]></title><description><![CDATA[<p>Dem Compiler ist das völlig egal.</p>
<pre><code>Typ                  *                         pZeiger;
</code></pre>
<p>funktioniert auch.</p>
<p>Lars</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925384</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 13 Jul 2010 07:57:54 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 08:05:16 GMT]]></title><description><![CDATA[<p>Interessant wir des dann, wenn du mehrere Zeiger gleichzeitig deklarierst:</p>
<pre><code class="language-cpp">Type *pMyType1, *pMyType2;
Type* pMyType3, pMyType4;
</code></pre>
<p>Was sind das jetzt für Variablen??? Das * ist rechtsassoziativ, das heißt es hängt an dem was rechts davon steht mehr als an dem, was links davon steht (oder war es linksassoziativ???). pMyType4 ist daher kein Pointer, sonder vom Typ 'Type'. Insofern macht es schon Sinn, das * nach C-Style zu schreiben, so vermeidet man Flüchtigkeitsfehler.<br />
Übrigens könnte man das auch so schreiben:</p>
<pre><code class="language-cpp">Type * pMyType;
</code></pre>
<p>PS: Misst, Manni war schneller</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925389</guid><dc:creator><![CDATA[Heimelchen]]></dc:creator><pubDate>Tue, 13 Jul 2010 08:05:16 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 08:48:32 GMT]]></title><description><![CDATA[<p>Heimelchen schrieb:</p>
<blockquote>
<p>Insofern macht es schon Sinn, das * nach C-Style zu schreiben, so vermeidet man Flüchtigkeitsfehler.</p>
</blockquote>
<p>Oder man definiert auf einer Zeile nur eine Variable. In C musste man früher alle Variablen im Kopf der Funktion definieren, daher mag das vielleicht etwas kompakter gewirkt haben, wenn man mehrere Variablen auf einer Zeile definiert hat. In neuerem C und auch in C++ definiert man die Variablen sowieso erst bei der ersten Verwendung, daher sind es meistens sehr wenig auf einmal, und man kann pro Zeile eine Variable hinschreiben, ohne dass man nun 20 Zeilen Variablendefinitionen hat <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>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925409</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 13 Jul 2010 08:48:32 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 08:56:17 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>zwischen operatoren und operanden dürfen 0 bis n Whitespaces stehen. Das gilt auch für die Deklaration von Zeigern. Es ist also völlig gleichgültig ob Du</p>
<pre><code class="language-cpp">TYPE*zeiger;
TYPE                         *

zeiger;

TYPE*
zeiger;

oder

TYPE
*zeiger;
</code></pre>
<p>schreibst.</p>
<p>Nur: Die Lesbarkeit des Codes für menschliche Leser sollte gewährleistet sein. Auch sollte innerhalb eines Quelltextes die verschiedenen Schreibweisen nicht gemischt werden. Dem Compiler ist das aber wurscht.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925415</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 13 Jul 2010 08:56:17 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 08:59:02 GMT]]></title><description><![CDATA[<p>Oh wow danke leute für die Antworten <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="🙂"
    /><br />
also ist es völlig egal ob ich es links oder rechts schreibe. Ich habe mir es in der kurzen Zeit nämlich so angewohnt es rechts beim Pointer und nicht beim Typ zu schreiben.</p>
<p>danke euch <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/1925417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925417</guid><dc:creator><![CDATA[CodeBase]]></dc:creator><pubDate>Tue, 13 Jul 2010 08:59:02 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 09:02:01 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Oder man definiert auf einer Zeile nur eine Variable. In C musste man früher alle Variablen im Kopf der Funktion definieren, daher mag das vielleicht etwas kompakter gewirkt haben, wenn man mehrere Variablen auf einer Zeile definiert hat. In neuerem C und auch in C++ definiert man die Variablen sowieso erst bei der ersten Verwendung, daher sind es meistens sehr wenig auf einmal, und man kann pro Zeile eine Variable hinschreiben, ohne dass man nun 20 Zeilen Variablendefinitionen hat <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>
</blockquote>
<p>Da kommt noch hinzu, dass lokale Zeiger kaum bis gar nicht vorkommen. In C++ hat man Referenzen, Iteratoren und Smartpointer, rohe Zeiger aber fast nie.<br />
Lediglich bei Klassen findet man die noch gelegentlich und bei Klassendeklaration ist eine Variable pro Zeile ohnehin allgemein üblich.</p>
<p>Also kann man den Stern getrost da hinsetzen, wo er hingehört: zum Typen. :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925419</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Tue, 13 Jul 2010 09:02:01 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 09:19:31 GMT]]></title><description><![CDATA[<p>Athar schrieb:</p>
<blockquote>
<p>Da kommt noch hinzu, dass lokale Zeiger kaum bis gar nicht vorkommen. In C++ hat man Referenzen, Iteratoren und Smartpointer, rohe Zeiger aber fast nie.<br />
Lediglich bei Klassen findet man die noch gelegentlich und bei Klassendeklaration ist eine Variable pro Zeile ohnehin allgemein üblich.</p>
<p>Also kann man den Stern getrost da hinsetzen, wo er hingehört: zum Typen. :p</p>
</blockquote>
<p>Referenzen benutze ich nur, wenn es unbedingt sein muß oder der Lesbarkeit dient. Normalerweise also gar nicht.</p>
<pre><code class="language-cpp">void func1( TYPE *pointer );
void func2( TYPE &amp;pointer );

void func3( void )
{
    TYPE value;

    func1( &amp;value );  // hier sehe ich sofort, daß der Parameter by reference übergeben wird
    func2( value );   // hier muß ich mir die Funktionsdeklaration anschauen
}
</code></pre>
<p>Der Stern gehört nicht zum Typen sondern zur Variable, da er sich nur dort auswirkt;</p>
<pre><code class="language-cpp">TYPE *pointer, value;  // Hier wird ein Zeiger und ein Objekt deklariert.
</code></pre>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925427</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 13 Jul 2010 09:19:31 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 09:27:03 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24458">@mgaeckler</a>: Da bist du aber ziemlich alleine mit deinem Geschmack. Überhaupt ist auch call-by-(nicht konstanter)-reference eher ungewöhnlich in C++, wenn man es nicht mit dehr großen Objekten zu tun hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925432</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 13 Jul 2010 09:27:03 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 09:27:39 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void func1( TYPE *pointer );
void func2( TYPE &amp;pointer );

void func3( void )
{
    TYPE value;

    func1( &amp;value );  // hier sehe ich sofort, daß der Parameter by reference übergeben wird
    func2( value );   // hier muß ich mir die Funktionsdeklaration anschauen
}
</code></pre>
</blockquote>
<p>Hmm eine frage zu diesem Code. Habe ich das richtig verstanden das beide Funktionen den gleichen Parameter haben ? also ist es egal ob bei der Funktion</p>
<pre><code class="language-cpp">Funktion (TYPE *Pointer)
</code></pre>
<p>definiere und dann beim Aufruf</p>
<pre><code class="language-cpp">Funktion( &amp;value )
</code></pre>
<p>.</p>
<p>oder es so mache</p>
<pre><code class="language-cpp">Funktion (TYPE &amp;Pointer)
</code></pre>
<p>und beim aufruf dann so</p>
<pre><code class="language-cpp">Funktion( value )
</code></pre>
<p>??</p>
<p>lg chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925434</guid><dc:creator><![CDATA[CodeBase]]></dc:creator><pubDate>Tue, 13 Jul 2010 09:27:39 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 09:47:51 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<p>[...]</p>
<pre><code class="language-cpp">func1( &amp;value );  // hier sehe ich sofort, daß der Parameter by reference
</code></pre>
<p>[...]</p>
</blockquote>
<p>Und was hilft Dir dieses Wissen? Du weisst immer noch nicht, ob der Wert geändert wird, oder nicht oder ob es ein Zeiger auf const ist, oder nicht. Ergo hasst Du keine Ahnung, was mit dem Wert passiert...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925443</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 13 Jul 2010 09:47:51 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 09:54:03 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>mgaeckler schrieb:</p>
<blockquote>
<p>[...]</p>
<pre><code class="language-cpp">func1( &amp;value );  // hier sehe ich sofort, daß der Parameter by reference
</code></pre>
<p>[...]</p>
</blockquote>
<p>Und was hilft Dir dieses Wissen? Du weisst immer noch nicht, ob der Wert geändert wird, oder nicht oder ob es ein Zeiger auf const ist, oder nicht. Ergo hasst Du keine Ahnung, was mit dem Wert passiert...</p>
</blockquote>
<p>In C++ hilft es mir tatsächlich wenig, weil es ja eine Referenz sein könnte. In C sehe ich durch die Parameterübergabe by value sofort beim Aufrufer, daß der Wert nicht verändert werden <strong>kann</strong>. In C++ ist beim Aufruf kein Unterschied zwischen der Parameterübergabe by value und by referenz.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925450</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 13 Jul 2010 09:54:03 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 09:56:48 GMT]]></title><description><![CDATA[<p>CodeBase schrieb:</p>
<blockquote>
<p>Hmm eine frage zu diesem Code. Habe ich das richtig verstanden das beide Funktionen den gleichen Parameter haben ? also ist es egal ob bei der Funktion</p>
<pre><code class="language-cpp">Funktion (TYPE *Pointer)
</code></pre>
<p>definiere und dann beim Aufruf</p>
<pre><code class="language-cpp">Funktion( &amp;value )
</code></pre>
<p>.</p>
<p>oder es so mache</p>
<pre><code class="language-cpp">Funktion (TYPE &amp;Pointer)
</code></pre>
<p>und beim aufruf dann so</p>
<pre><code class="language-cpp">Funktion( value )
</code></pre>
<p>??</p>
<p>lg chris</p>
</blockquote>
<p>Semantisch ist beides das gleiche. func1 und func2 bekommen beide die Adresse von value.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925453</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 13 Jul 2010 09:56:48 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 10:06:58 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<p>Semantisch ist beides das gleiche. func1 und func2 bekommen beide die Adresse von value.</p>
<p>mfg Martin</p>
</blockquote>
<p>Das stimmt nicht. Im ersten Fall hat man eine Übergabe per Wert (der Wert des Zeigers).<br />
Im zweiten Fall hat man eine Übergabe per Referenz, also das Objekt selbst unter dem Namen des formalen Parameters. Hinter der Referenz <em>kann</em> zwar Zeigermechanik am werkeln sein, <em>muss</em> aber nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925460</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 13 Jul 2010 10:06:58 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 10:11:44 GMT]]></title><description><![CDATA[<p>Der Stern gehört <em>logisch</em> zum Typen, da ändert es auch nichts, dass die C-Designer raffiniert sein wollten.<br />
Warum man diese Eigenheit ignorieren kann, haben Dravere und ich schon erläutert.</p>
<p>Wenn du eine Funktion aufrufst, wär's übrigens nicht ganz verkehrt, wenn du weißt, was für Parameter sie erwartet und wozu sie verwendet werden. Woraus sich alles weitere ergibt.<br />
Wenn du gerade fremden Code liest, gibt es notfalls Calltips zur schnellen Aufklärung, wenn etwas mal nicht eindeutig sein sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925464</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Tue, 13 Jul 2010 10:11:44 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 11:14:37 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Das stimmt nicht. Im ersten Fall hat man eine Übergabe per Wert (der Wert des Zeigers).<br />
Im zweiten Fall hat man eine Übergabe per Referenz, also das Objekt selbst unter dem Namen des formalen Parameters. Hinter der Referenz <em>kann</em> zwar Zeigermechanik am werkeln sein, <em>muss</em> aber nicht.</p>
</blockquote>
<p>Das sind Implementierungsdetails, die den Compilerbauer interessieren. Für den C++-Programmierer ist es Jacke wie Hose. Deswegen schrieb ich ja auch &quot;semantisch&quot;.</p>
<pre><code class="language-cpp">void func1( TYPE *pointer )
{
   *pointer = value:
}
void main( void )
{
   TYPE variable;

   func1( &amp;variable );
}
</code></pre>
<p>und</p>
<pre><code class="language-cpp">void func1( TYPE &amp;reference )
{
   reference = value:
}
void main( void )
{
   TYPE variable;

   func1( variable );
}
</code></pre>
<p>machen exakt das gleiche.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925519</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 13 Jul 2010 11:14:37 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 11:15:29 GMT]]></title><description><![CDATA[<p>Athar schrieb:</p>
<blockquote>
<p>Der Stern gehört <em>logisch</em> zum Typen, da ändert es auch nichts, dass die C-Designer raffiniert sein wollten.<br />
Warum man diese Eigenheit ignorieren kann, haben Dravere und ich schon erläutert.</p>
</blockquote>
<p>Wer war eher da, Huhn oder Ei?</p>
<p>Vom Bauchgefühl würd ich dir ja recht geben. Aber mein Kopf stellt sich die Frage, warum der * logisch zum Typen gehört, wenn die Assoziativität ihn an die Variable bindet? Vielleicht hatte the god father of C da eine andere Logik...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925520</guid><dc:creator><![CDATA[Heimelchen]]></dc:creator><pubDate>Tue, 13 Jul 2010 11:15:29 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 11:24:37 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">typedef int * pint;
pint p;
</code></pre>
<p>lese ich als</p>
<pre><code class="language-cpp">int * p;
</code></pre>
<p>Damit gehört für mich der * zum Typ.<br />
Klappt natürlich nur, wenn man für jede Variable eine eigene Zeile opfert, aber das mache ich gerne. Im Weiteren schließe ich mich Dravere an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925524</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 13 Jul 2010 11:24:37 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 11:25:52 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24458">@mgaeckler</a>: Da bist du aber ziemlich alleine mit deinem Geschmack. Überhaupt ist auch call-by-(nicht konstanter)-reference eher ungewöhnlich in C++, wenn man es nicht mit dehr großen Objekten zu tun hat.</p>
</blockquote>
<p>Das mag sein. Jahrelange Arbeit mit C hat natürlich meinen Stil geprägt. Mag sein, daß er anders wäre, wenn ich gleich mit C++ angefangen hätte. Das gab's damals aber noch nicht.</p>
<p>Ich habe mir es so angewöhnt:</p>
<p>Funktionen, die größere Objekte erhalten ohne sie verändern zu wollen, definiere ich mit const referenzen. Funktionen, die die Werte verändern wollen, bekommen einen Zeiger.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925527</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 13 Jul 2010 11:25:52 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 11:31:37 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<p>Ich habe mir es so angewöhnt:<br />
Funktionen, die größere Objekte erhalten ohne sie verändern zu wollen, definiere ich mit const referenzen. Funktionen, die die Werte verändern wollen, bekommen einen Zeiger.</p>
</blockquote>
<p>So mache ich es auch und es gefällt mir sehr gut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925531</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 13 Jul 2010 11:31:37 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 11:34:01 GMT]]></title><description><![CDATA[<p>Athar schrieb:</p>
<blockquote>
<p>Der Stern gehört <em>logisch</em> zum Typen, da ändert es auch nichts, dass die C-Designer raffiniert sein wollten.</p>
</blockquote>
<p>Das stimmt, da er sich aber nur auf die nachfolgende Variable, der Typ auf alle Variablen der Deklaration bezieht, ist es trotzdem besser, den * bei der Variable zu schreiben.</p>
<p>Athar schrieb:</p>
<blockquote>
<p>Wenn du eine Funktion aufrufst, wär's übrigens nicht ganz verkehrt, wenn du weißt, was für Parameter sie erwartet und wozu sie verwendet werden. Woraus sich alles weitere ergibt.</p>
</blockquote>
<p>Korrekt, dem habe ich nichts hinzuzufügen.</p>
<p>Athar schrieb:</p>
<blockquote>
<p>Wenn du gerade fremden Code liest, gibt es notfalls Calltips zur schnellen Aufklärung, wenn etwas mal nicht eindeutig sein sollte.</p>
</blockquote>
<p>Calltips hat man aber nicht immer zur Verfügung, deshalb habe ich es lieber, wenn ich beim Aufrufer sehe, was Sache ist.</p>
<p>Ich habe mir das ganze schon vor Jahren angewöhnt und benutze auch heute noch Editoren, die das eben nicht können (vi, Borland C++ um nur zwei Beispiele zu nennen)</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925535</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 13 Jul 2010 11:34:01 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 11:40:26 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">typedef int * pint;
pint p;
</code></pre>
<p>lese ich als</p>
<pre><code class="language-cpp">int * p;
</code></pre>
<p>Damit gehört für mich der * zum Typ.<br />
Klappt natürlich nur, wenn man für jede Variable eine eigene Zeile opfert, aber das mache ich gerne. Im Weiteren schließe ich mich Dravere an.</p>
</blockquote>
<p>Wobei das wiederum eher die typedef-Syntax betrifft als die &quot;Logik&quot; des *.</p>
<p>Wie gesagt, vom Bauch her teile ich die Logik, dass der Pointer ein Typ ist und seine &quot;Bezeichnung&quot; zur Typbezeichnung gehört. Aber die Syntax sagt nunmal was anderes...</p>
<p>Wobei ich solche Diskussionen immer spannend finde. Bei Text- oder Bildinterpretationen, wie man sie in der Schule macht, diskutieren Leute ewig darüber, was der der Schöpfer mit der Aliteration oder Farbmischung ausdrückung möchte. Vielleicht ist dem Autor kein Wort mit einem anderen Buchstaben eingefallen und begeisternde Farbvariationen haben ja bekanntlich auch &quot;künstlerisch hochbegabte&quot; Affen geschafft.<br />
Sich darüber zu streiten, was &quot;üblich&quot; ist, was &quot;guter Stil&quot; ist, was &quot;logisch&quot; ist oder auch &quot;dumm&quot;, wären alle einer Meinung, gäbe es keinen Fortschritt mehr.</p>
<p>Um zum Thema zurückzukommen: vielleicht ändert jemand die Syntax so, dass</p>
<pre><code class="language-cpp">type* pMyVar1, pMyVr2;
</code></pre>
<p>zwei Pointer deklariert. Solange das nicht so ist, gehört der Stern logisch &quot;nach rechts&quot;. Wo man ihn hinschreibt, bleibt nach wie vor scheiß egal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925537</guid><dc:creator><![CDATA[Heimelchen]]></dc:creator><pubDate>Tue, 13 Jul 2010 11:40:26 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 12:02:47 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<p>[...]Das sind Implementierungsdetails, die den Compilerbauer interessieren. Für den C++-Programmierer ist es Jacke wie Hose. Deswegen schrieb ich ja auch &quot;semantisch&quot;.[...]</p>
</blockquote>
<p>Eben nicht. Übergabe per Wert bzw. als Referenz interessiert mich als Entwickler, weil es einige große Unterschiede gibt.<br />
Referenzen kann man z.B. nicht auf Referenzen zeigen lassen. Auf Zeiger hingegen schon. Zeiger dürfen auf NULL bzw. auf ungültige Werte Zeigen. Referenzen hingegen nicht. Einen Zeiger kann ich beliebig auf irgendetwas zeigen lassen, weil es eine normale Variable eines Zeigertyps ist. Auf Referenzen trifft das nicht zu.<br />
Deine Aussage</p>
<p>mgaeckler schrieb:</p>
<blockquote>
<p>func1 und func2 bekommen beide die Adresse von value.</p>
</blockquote>
<p>ist falsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925544</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 13 Jul 2010 12:02:47 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 12:17:25 GMT]]></title><description><![CDATA[<p>Natürlich gehört der * zum Typ. Aber [] bei Arrays gehört auch zum Typ. Überhaupt gehört in einer Deklaration alles außer dem deklarierten Namen zum Typ:</p>
<pre><code class="language-cpp">void (*f)(int(&amp;)[10]);
//&lt;-----&gt; &lt;-----------&gt;
//  Typ  ^  auch Typ
//       |
//   Bezeichner
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1925554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925554</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 13 Jul 2010 12:17:25 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage zu Zeigern on Tue, 13 Jul 2010 13:31:29 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Eben nicht. Übergabe per Wert bzw. als Referenz interessiert mich als Entwickler, weil es einige große Unterschiede gibt.<br />
Referenzen kann man z.B. nicht auf Referenzen zeigen lassen. Auf Zeiger hingegen schon. Zeiger dürfen auf NULL bzw. auf ungültige Werte Zeigen. Referenzen hingegen nicht. Einen Zeiger kann ich beliebig auf irgendetwas zeigen lassen, weil es eine normale Variable eines Zeigertyps ist. Auf Referenzen trifft das nicht zu.</p>
</blockquote>
<p>Natürlich gibt es auch Unterschiede zwischen Referenzen und Zeigern. Referenzen wurden schließlich nicht nur aus Spass erfunden. Das kommt aber daher, weil Zeiger syntaktisch anders verwendet werden und man/frau mit Zeigern mehr Unfug treiben kann.</p>
<p>Man kann aber auch mit Referenzen Unfug treiben:</p>
<pre><code class="language-cpp">#include &lt;string.h&gt;

static void destroyer( void )
{
	int array[255];

	memset( array, 0, sizeof( int ) * 255 );

	printf( &quot;&quot;, array );
}

static int &amp;func( void )
{
	int var = 5;
	int &amp;ref = var;
	ref = 6;

	return ref;
}

int _tmain(int argc, _TCHAR* argv[])
{
	int &amp;var = func();
	destroyer();

	printf( &quot;%d&quot;, var );
	return 0;
}
</code></pre>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Deine Aussage</p>
<p>mgaeckler schrieb:</p>
<blockquote>
<p>func1 und func2 bekommen beide die Adresse von value.</p>
</blockquote>
<p>ist falsch.</p>
</blockquote>
<p>Eine Referenz ist letztendlich nichts anders als eine Adresse wie auch immer der Compilerbauer das realisiert hat.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1925600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1925600</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 13 Jul 2010 13:31:29 GMT</pubDate></item></channel></rss>