<?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[structName *&amp;amp; als Parameter Sinn?]]></title><description><![CDATA[<p>Hallo,</p>
<p>und zwar habe ich folgendes gesehen bzw. auch schon selbst verwendet ohne den eigentlichen Sinn dahinter zu verstehen und zwar:</p>
<p>void fkt(structName *&amp; pStruct)<br />
{<br />
pStrucht-&gt;.....<br />
}</p>
<p>Aber mir verschließt sich der eigentliche Sinn dahinter, ich habe doch schon durch (structName&amp; pStruct) eine Referenz auf die Sturktur und könnte diese Verändern ohne den lästigen -&gt; mitschleppen zu müssen.</p>
<p>Gibt es dahinter einen tieferliegenden Sinn noch einen Zeiger mit einzubauen?</p>
<p>Und könnte man einen solchen *&amp; Parameter auch irgendwie const machen? Also in etwa void fkt(const structName *&amp; pStruct) um zu verhindern das an der übergebenen Struktur etwas verändert werden kann? Konkret wird in einer Funktion nämlich nur 'ausgelesen' und nichts verändert.</p>
<p>Vielen Dank im Voraus<br />
Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183488/structname-amp-als-parameter-sinn</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 06:09:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183488.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Jun 2007 13:18:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to structName *&amp;amp; als Parameter Sinn? on Tue, 05 Jun 2007 13:18:49 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>und zwar habe ich folgendes gesehen bzw. auch schon selbst verwendet ohne den eigentlichen Sinn dahinter zu verstehen und zwar:</p>
<p>void fkt(structName *&amp; pStruct)<br />
{<br />
pStrucht-&gt;.....<br />
}</p>
<p>Aber mir verschließt sich der eigentliche Sinn dahinter, ich habe doch schon durch (structName&amp; pStruct) eine Referenz auf die Sturktur und könnte diese Verändern ohne den lästigen -&gt; mitschleppen zu müssen.</p>
<p>Gibt es dahinter einen tieferliegenden Sinn noch einen Zeiger mit einzubauen?</p>
<p>Und könnte man einen solchen *&amp; Parameter auch irgendwie const machen? Also in etwa void fkt(const structName *&amp; pStruct) um zu verhindern das an der übergebenen Struktur etwas verändert werden kann? Konkret wird in einer Funktion nämlich nur 'ausgelesen' und nichts verändert.</p>
<p>Vielen Dank im Voraus<br />
Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299313</guid><dc:creator><![CDATA[AndiP]]></dc:creator><pubDate>Tue, 05 Jun 2007 13:18:49 GMT</pubDate></item><item><title><![CDATA[Reply to structName *&amp;amp; als Parameter Sinn? on Tue, 05 Jun 2007 13:32:36 GMT]]></title><description><![CDATA[<p>Und hier noch eine interessantere Frage für mich in diesem Zusammenhang, wieso funktioniert das hier nicht:</p>
<pre><code>class XYZ
{
public :

	struct hallo
	{
		int x;
	};

	void printHallo(void) const
	{
		printHallo(Welt);
	}

private:

	void printHallo(hallo *&amp; pHallo)
	{
		cout &lt;&lt; pHallo-&gt;x;
	}

	h
</code></pre>
<p>Fehlermeldung lautet ständig:</p>
<p>Fehler 1 error C2663: 'XYZ::printHallo': für 2 Überladung(en) gibt es keine zulässige Konvertierung für den this-Zeiger h:\Programmierung II\Spielwiese\Spielwiese\spiel.cpp 16</p>
<p>Das verstehe ich einfach nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299323</guid><dc:creator><![CDATA[AndiP]]></dc:creator><pubDate>Tue, 05 Jun 2007 13:32:36 GMT</pubDate></item><item><title><![CDATA[Reply to structName *&amp;amp; als Parameter Sinn? on Tue, 05 Jun 2007 13:40:49 GMT]]></title><description><![CDATA[<p>dieses beispiel veranschautlicht eine möglichkeit der anwendung.<br />
natürlich kann man auch pointer auf pointer verwenden.</p>
<p>der pointer (da als referenz übergeben) wird von &amp;x auf &amp;y umgebogen.</p>
<pre><code class="language-cpp">int x = 10;
int y = 20;

void func(int *&amp; pint)
{
 pint = &amp;y;
}

int main(int, char**)
{
 int* pint = &amp;x;
 printf(&quot;%d\n&quot;, *pint); // 10

 func(pint);
 printf(&quot;%d\n&quot;, *pint); // 20
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1299328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299328</guid><dc:creator><![CDATA[inp]]></dc:creator><pubDate>Tue, 05 Jun 2007 13:40:49 GMT</pubDate></item><item><title><![CDATA[Reply to structName *&amp;amp; als Parameter Sinn? on Tue, 05 Jun 2007 13:53:44 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class XYZ
{
public:   
    struct hallo_s
    {
        unsigned int x;
        hallo_s() : x(0) {}
    };

    void print_hallo() const
    {
        print(m_item);
    }

private:
    void print(const hallo_s&amp; hallo) const
    {
        std::cout &lt;&lt; hallo.x &lt;&lt; std::endl;
    }

private:
    hallo_s m_item;
};
</code></pre>
<p>? so wäre es sinniger ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299338</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 05 Jun 2007 13:53:44 GMT</pubDate></item><item><title><![CDATA[Reply to structName *&amp;amp; als Parameter Sinn? on Tue, 05 Jun 2007 13:53:51 GMT]]></title><description><![CDATA[<p>Anders gesagt: T*&amp; macht Sinn als Typ eines Output Parameters (OUT oder IN, OUT), aber keinen Sinn als Typ eines Input Parameters.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299339</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 05 Jun 2007 13:53:51 GMT</pubDate></item><item><title><![CDATA[Reply to structName *&amp;amp; als Parameter Sinn? on Tue, 05 Jun 2007 14:10:49 GMT]]></title><description><![CDATA[<p>Wow danke, jetzt langsam verstehe ich was C++ hier treibt bzw. der Code den ich vor die Nase gesetzt bekommen habe.</p>
<p>Mal schauen ob ich es so zum laufen kriege.</p>
<p>Ciao<br />
Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299349</guid><dc:creator><![CDATA[AndiP]]></dc:creator><pubDate>Tue, 05 Jun 2007 14:10:49 GMT</pubDate></item><item><title><![CDATA[Reply to structName *&amp;amp; als Parameter Sinn? on Tue, 05 Jun 2007 14:14:14 GMT]]></title><description><![CDATA[<p>yup, für out/inout parameter für pointer notwendig</p>
<p>wobei out/inout verhalten kann man auch mit pointerpointern machen</p>
<pre><code class="language-cpp">int x = 10;
int y = 20;

void func(int** ppInt)
{
 if (ppInt != NULL) //notwendiges übel, bei pointern weiss man nie ob's null sind
  *ppInt = &amp;y;
}

int main(int, char**)
{
 int* pInt = &amp;x;
 printf(&quot;%d\n&quot;, *pInt);

 func(&amp;pInt);
 printf(&quot;%d\n&quot;, *pInt);

 func(NULL); // potentielles !!EEK!!
}
</code></pre>
<p>achtung. konstrukte wie diese hier sind gefährlich <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>
<pre><code class="language-cpp">void func(sometyp*&amp; ptyp)
{
 ptyp = new sometyp; //funktion fungiert als datenquelle, und überlässt das löschen dem clientcode
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1299351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299351</guid><dc:creator><![CDATA[inp]]></dc:creator><pubDate>Tue, 05 Jun 2007 14:14:14 GMT</pubDate></item></channel></rss>