<?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[Casting + 2 Pointer als Parameter ??]]></title><description><![CDATA[<p>Guten Tag,<br />
ich habe eine Frage auf die ich einfach keine Lösung finde.<br />
Liegt aber wahrscheinlich da dran das ich den genauen Suchbegriff nicht kenne.<br />
Nun zu meiner eigentlichen Frage:<br />
In manchen Tutorials bzw. Büchern sehe ich Funktionen bzw. Methoden welche folgendes als Parameter erwarten: <em>((DWORD</em>)(&amp;var))<br />
Soweit ich das richtig verstanden habe steht DWORD fürs Casting der Referenz &amp;var nach DWORD. Doch wozu das * nach DWORD ? Ich meine funktioniert es nicht einfach so (DWORD) anstatt (DWORD*) ? und was bedeutet das * ganz am Anfang vor DWORD ? <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="😮"
    /><br />
Bin wirklich über jeden Hinweis dankbar, da ich echt nicht mehr weiß wonach ich suchen soll. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>MfG IncogNito</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/227947/casting-2-pointer-als-parameter</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 07:41:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/227947.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Nov 2008 20:07:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Casting + 2 Pointer als Parameter ?? on Fri, 21 Nov 2008 20:08:16 GMT]]></title><description><![CDATA[<p>Guten Tag,<br />
ich habe eine Frage auf die ich einfach keine Lösung finde.<br />
Liegt aber wahrscheinlich da dran das ich den genauen Suchbegriff nicht kenne.<br />
Nun zu meiner eigentlichen Frage:<br />
In manchen Tutorials bzw. Büchern sehe ich Funktionen bzw. Methoden welche folgendes als Parameter erwarten: <em>((DWORD</em>)(&amp;var))<br />
Soweit ich das richtig verstanden habe steht DWORD fürs Casting der Referenz &amp;var nach DWORD. Doch wozu das * nach DWORD ? Ich meine funktioniert es nicht einfach so (DWORD) anstatt (DWORD*) ? und was bedeutet das * ganz am Anfang vor DWORD ? <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="😮"
    /><br />
Bin wirklich über jeden Hinweis dankbar, da ich echt nicht mehr weiß wonach ich suchen soll. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>MfG IncogNito</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618566</guid><dc:creator><![CDATA[IncogNito]]></dc:creator><pubDate>Fri, 21 Nov 2008 20:08:16 GMT</pubDate></item><item><title><![CDATA[Reply to Casting + 2 Pointer als Parameter ?? on Fri, 21 Nov 2008 20:27:23 GMT]]></title><description><![CDATA[<p>IncogNito schrieb:</p>
<blockquote>
<p>In manchen Tutorials bzw. Büchern sehe ich Funktionen bzw. Methoden welche folgendes als Parameter erwarten: <em>((DWORD</em>)(&amp;var))</p>
</blockquote>
<p>Mit sicherheit erwarten sie dies nicht als Parameter, sondern du siehst dies als Aufruf. Das was du dort siehst ist weder ein Beispiel für saubere Programmierung noch in C++ vorzuziehen. Auch wenn die C++ Konvertierungen mehr Schreibaufwand sind.</p>
<p>&amp;var =&gt; Adresse der Variablen var (Dessen Originaltyp ich nicht kenne)</p>
<p>(DWORD*)(&amp;var) =&gt; Ein sogenannter C-Cast. Die Adresse (&amp;var) wird in den Typ (DWORD*) umgewandelt. Ohne Gültigkeitsprüfungen etc. In C++ verwendet man für Umwandlungen, je nach Art: static_cast, const_cast, dynamic_cast, reinterpret_cast...</p>
<p><em>((DWORD</em>)(&amp;var)) =&gt; Der in ein DWORD* umgewandelte Ausdruck ((DWORD*)(&amp;var)) wird nun wieder als Wert interpretiert, unabhängig von seinen ursprünglichen Inhalt. Da wir ein DWORD-Zeiger haben, lesen wir hier den Wert als DWORD aus dem Speicherberech aus, auf den der Zeiger verweist.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618575</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 21 Nov 2008 20:27:23 GMT</pubDate></item><item><title><![CDATA[Reply to Casting + 2 Pointer als Parameter ?? on Sat, 22 Nov 2008 22:14:22 GMT]]></title><description><![CDATA[<p>Ich glaube besser hätte man es nicht erklären können. Vielen Dank! <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>
<p>Gruß Inco</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619098</guid><dc:creator><![CDATA[IncogNito]]></dc:creator><pubDate>Sat, 22 Nov 2008 22:14:22 GMT</pubDate></item><item><title><![CDATA[Reply to Casting + 2 Pointer als Parameter ?? on Tue, 02 Dec 2008 22:16:22 GMT]]></title><description><![CDATA[<p>Hallo,<br />
habe noch eine kleine Frage zum C-Casting.<br />
Unswar wenn ich jetzt folgenden Code habe und ein Casting von float nach int machen möchte, dann kriege ich einen &quot;merkwürdigen&quot; Wert.</p>
<pre><code class="language-cpp">float abc = 123.4;
	int * asdf =  (int*)&amp;abc;

	cout &lt;&lt; *(int*)&amp;asdf &lt;&lt;endl; //1245024
	cout &lt;&lt; *asdf; //1123470541

       cout &lt;&lt; *(float*)&amp;asdf &lt;&lt;endl; //1.74465e-039
</code></pre>
<p>Kann mir bitte einer verraten wie ich für den Pointer asdf den int Wert 123 rauskriege ? Bzw. den float Wert 123.4.</p>
<p>Mit freundlich Grüßen</p>
<p>Inco</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624637</guid><dc:creator><![CDATA[IncogNito]]></dc:creator><pubDate>Tue, 02 Dec 2008 22:16:22 GMT</pubDate></item><item><title><![CDATA[Reply to Casting + 2 Pointer als Parameter ?? on Wed, 03 Dec 2008 09:10:46 GMT]]></title><description><![CDATA[<p>Wenn du nur von float nach int casten willst brauchst du dieses Gewürge gar nicht.</p>
<pre><code class="language-cpp">float abc = 123.4;
// das sollte reichen, bringt aber evtl. eine Warnung
    int asdf =  abc; 
// dann eher so
    asdf = static_cast&lt;int&gt;(abc);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1624774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624774</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 03 Dec 2008 09:10:46 GMT</pubDate></item><item><title><![CDATA[Reply to Casting + 2 Pointer als Parameter ?? on Wed, 03 Dec 2008 17:50:44 GMT]]></title><description><![CDATA[<p>Danke,<br />
aber wie schaut es bei Pointern aus ?<br />
Weil ich in vielen Beispielen gesehen habe das Pointer als Parameter an Funktionen per C-Cast übergeben wurden (ich weiß das es keine saubere Art ist).<br />
Aber wie stelle ich das Casting mit Pointern ordentlich an ?</p>
<p>Gruß Inco</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625049</guid><dc:creator><![CDATA[IncogNito]]></dc:creator><pubDate>Wed, 03 Dec 2008 17:50:44 GMT</pubDate></item><item><title><![CDATA[Reply to Casting + 2 Pointer als Parameter ?? on Thu, 04 Dec 2008 06:47:52 GMT]]></title><description><![CDATA[<p>IncogNito schrieb:</p>
<blockquote>
<p>Danke,<br />
aber wie schaut es bei Pointern aus ?<br />
Weil ich in vielen Beispielen gesehen habe das Pointer als Parameter an Funktionen per C-Cast übergeben wurden (ich weiß das es keine saubere Art ist).<br />
Aber wie stelle ich das Casting mit Pointern ordentlich an ?</p>
<p>Gruß Inco</p>
</blockquote>
<p>Wenn es wirklich sein muss, dann mit static_cast&lt;&gt;. Es kann auch vorkommen, dass du reinterpret_cast&lt;&gt; brauchst, wenn du mit einer C-API arbeitest. Aber wie gesagt, wenn es sich vermeiden lässt, dann keine Casts..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625218</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 04 Dec 2008 06:47:52 GMT</pubDate></item><item><title><![CDATA[Reply to Casting + 2 Pointer als Parameter ?? on Thu, 04 Dec 2008 19:22:12 GMT]]></title><description><![CDATA[<p>Ich habs jetzt so versucht:</p>
<pre><code class="language-cpp">float abc = 123.4;
	int * asdf =  (int*)&amp;abc;
	cout &lt;&lt; *static_cast&lt;int*&gt;(asdf) &lt;&lt;endl; //1123470541
</code></pre>
<p>Das Ergebniss ist aber immernoch 1123470541 anstatt 123.<br />
Was mache ich falsch ? Ein kleines Beispiel mit einem Pointer wäre nett (ohne Pointer klappts super).</p>
<p>Gruß Inco</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625626</guid><dc:creator><![CDATA[IncogNito]]></dc:creator><pubDate>Thu, 04 Dec 2008 19:22:12 GMT</pubDate></item><item><title><![CDATA[Reply to Casting + 2 Pointer als Parameter ?? on Thu, 04 Dec 2008 19:39:40 GMT]]></title><description><![CDATA[<p>IncogNito schrieb:</p>
<blockquote>
<p>Ich habs jetzt so versucht:</p>
<pre><code class="language-cpp">float abc = 123.4;
	int * asdf =  (int*)&amp;abc;
	cout &lt;&lt; *static_cast&lt;int*&gt;(asdf) &lt;&lt;endl; //1123470541
</code></pre>
<p>Das Ergebniss ist aber immernoch 1123470541 anstatt 123.<br />
Was mache ich falsch ? Ein kleines Beispiel mit einem Pointer wäre nett (ohne Pointer klappts super).</p>
<p>Gruß Inco</p>
</blockquote>
<p>Was willst du mit so einem Code bezwecken? Im Grunde missbrauchst du in deinem Code nur einen int Zeiger um das Bytemuster eines floats wie einen int zu interpretieren. In der 2. Zeile solltest du einen reinterpret_cast benutzen und der cast in Zeile 3 ist sinnlos, da asdf bereits vom Typ int* ist.<br />
Bei deinem Code sollte NIE der Wert 123 ausgegeben werden, da hast du einen Denkfehler. Wie geagt: Der ausgegebene Wert ist einfach die int Interpretierung des float Werts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625639</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Thu, 04 Dec 2008 19:39:40 GMT</pubDate></item><item><title><![CDATA[Reply to Casting + 2 Pointer als Parameter ?? on Fri, 05 Dec 2008 06:26:37 GMT]]></title><description><![CDATA[<p>Das Problem ist, dass du intern ein anderes Bit Muster hast und wenn du lediglich einen Zeiger darauf castest, dann passiert intern des eigentlichen Wertes überhaupt nix. Und somit wird das Bit Muster anderst interpretiert und du hast einen &quot;unsinnigen&quot; Wert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625753</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 05 Dec 2008 06:26:37 GMT</pubDate></item></channel></rss>