<?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[Casten]]></title><description><![CDATA[<p>Hallo ich habe eben diesen Artikel gefunden: <a href="http://www.codeproject.com/Articles/12935/What-static_cast-is-actually-doing" rel="nofollow">http://www.codeproject.com/Articles/12935/What-static_cast-is-actually-doing</a></p>
<p>Dort steht:</p>
<pre><code class="language-cpp">float f = 12.3;
float* pf = &amp;f;

// static cast&lt;&gt;
// OK, n = 12
int n = static_cast&lt;int&gt;(f);
// Error, types pointed to are unrelated
//int* pn = static_cast&lt;int*&gt;(pf);
// OK
void* pv = static_cast&lt;void*&gt;(pf);
// OK, but *pn2 is rubbish
int* pn2 = static_cast&lt;int*&gt;(pv);

// reinterpret_cast&lt;&gt;
// Error, the compiler know you should
// call static_cast&lt;&gt;
//int i = reinterpret_cast&lt;int&gt;(f);
// OK, but *pn is actually rubbish, same as *pn2
int* pi = reinterpret_cast&lt;int*&gt;(pf);
</code></pre>
<p>Hier hänge ich etwas, ich dachte dort könnte ich jetzt 12 bzw. 12.3 ausgeben lassen und wieso soll man da void* angeben wo ist denn da der Sinn? Ok int* pv = static_cast&lt;int*&gt;(pf); so funktioniert es nicht aber void* ist das an der Stelle nicht sinnlos?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main(int argc, char* argv[])
{

float f = 12.3;
float *pf = &amp;f;

void* pv = static_cast&lt;void*&gt;(pf);
cout&lt;&lt; pv;

system(&quot;PAUSE&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/303820/casten</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 06:31:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/303820.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 May 2012 10:13:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Casten on Wed, 23 May 2012 10:13:18 GMT]]></title><description><![CDATA[<p>Hallo ich habe eben diesen Artikel gefunden: <a href="http://www.codeproject.com/Articles/12935/What-static_cast-is-actually-doing" rel="nofollow">http://www.codeproject.com/Articles/12935/What-static_cast-is-actually-doing</a></p>
<p>Dort steht:</p>
<pre><code class="language-cpp">float f = 12.3;
float* pf = &amp;f;

// static cast&lt;&gt;
// OK, n = 12
int n = static_cast&lt;int&gt;(f);
// Error, types pointed to are unrelated
//int* pn = static_cast&lt;int*&gt;(pf);
// OK
void* pv = static_cast&lt;void*&gt;(pf);
// OK, but *pn2 is rubbish
int* pn2 = static_cast&lt;int*&gt;(pv);

// reinterpret_cast&lt;&gt;
// Error, the compiler know you should
// call static_cast&lt;&gt;
//int i = reinterpret_cast&lt;int&gt;(f);
// OK, but *pn is actually rubbish, same as *pn2
int* pi = reinterpret_cast&lt;int*&gt;(pf);
</code></pre>
<p>Hier hänge ich etwas, ich dachte dort könnte ich jetzt 12 bzw. 12.3 ausgeben lassen und wieso soll man da void* angeben wo ist denn da der Sinn? Ok int* pv = static_cast&lt;int*&gt;(pf); so funktioniert es nicht aber void* ist das an der Stelle nicht sinnlos?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main(int argc, char* argv[])
{

float f = 12.3;
float *pf = &amp;f;

void* pv = static_cast&lt;void*&gt;(pf);
cout&lt;&lt; pv;

system(&quot;PAUSE&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2214414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214414</guid><dc:creator><![CDATA[staticCaster]]></dc:creator><pubDate>Wed, 23 May 2012 10:13:18 GMT</pubDate></item><item><title><![CDATA[Reply to Casten on Wed, 23 May 2012 10:19:52 GMT]]></title><description><![CDATA[<p>Und deine Frage war?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214417</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 23 May 2012 10:19:52 GMT</pubDate></item><item><title><![CDATA[Reply to Casten on Wed, 23 May 2012 10:24:36 GMT]]></title><description><![CDATA[<p>Was hab ich hier von?</p>
<pre><code class="language-cpp">float f = 12.3;
float* pf = &amp;f;
void* pv = static_cast&lt;void*&gt;(pf); 
 cout&lt;&lt; pv;
</code></pre>
<p>Was kann ich damit machen nachdem ich es nach void* gecastet habe?</p>
<p>Hier ist es mir klar wenn ich jetzt n ausgeben lasse dann bekomme ich eine 12 ausgeben.</p>
<pre><code class="language-cpp">float f = 12.3;
float* pf = &amp;f;
int n = static_cast&lt;int&gt;(f);
</code></pre>
<p>Aber bei dem void* cast bekomme ich immer nur die Adresse vom Pointer ausgeben daher weiss ich nicht was der Autor von dem Artikel damit verdeutlichen will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214420</guid><dc:creator><![CDATA[staticCaster]]></dc:creator><pubDate>Wed, 23 May 2012 10:24:36 GMT</pubDate></item><item><title><![CDATA[Reply to Casten on Wed, 23 May 2012 10:33:01 GMT]]></title><description><![CDATA[<p>Wenn du nicht weißt wozu du etwas machen sollst, dann lass es halt. Nach dem Sinn einer Typumwandlung zu fragen ist irgendwie.. sinnlos. <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>Aber wenn du allgemein wissen willst, wozu man void* braucht: In C++ eigentlich eher selten. Manchmal um Zeiger auf beliebige Speicherbereiche zu übergeben. Oder um alte C-Schnittstellen zu nutzen, die keine Templates kennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214422</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 23 May 2012 10:33:01 GMT</pubDate></item><item><title><![CDATA[Reply to Casten on Wed, 23 May 2012 10:40:07 GMT]]></title><description><![CDATA[<p>Du kannst einen void* wieder in jeden beliebigen anderen Zeiger casten, der Compiler erinnert sich nicht, was ður ein Zeiger es ursprünglich war. So kannst du nun aus dem ursprünglichen float* über zwei static_cast Stationen einen int* machen, so als hättest du einen reinterpret_cast zwischen den Zeigern gemacht. Dies illustriert bloß die Regeln eines static_casts, das Ergebnis ist eben so unsinnig wie das Ergebnis des äquivalenten reinterpret_casts.</p>
<p>Es gibt ein paar Anwendungen dafür, wenn man generische Programmierung ohne Templates machen möchte (z.B. um C-Schnittstellen von Bibliotheken zu bedienen), aber sonst ist dies in C++ eher ein exotisches Feature.</p>
<p>edit: zu langsam...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214425</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 23 May 2012 10:40:07 GMT</pubDate></item><item><title><![CDATA[Reply to Casten on Wed, 23 May 2012 17:01:55 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Du kannst einen void* wieder in jeden beliebigen anderen Zeiger casten, der Compiler erinnert sich nicht, was ður ein Zeiger es ursprünglich war.</p>
</blockquote>
<p>Sagt der Standard nicht, dass man <code>void*</code> nur dorthin casten darf, von wo man gekommen ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214625</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 23 May 2012 17:01:55 GMT</pubDate></item><item><title><![CDATA[Reply to Casten on Wed, 23 May 2012 17:13:42 GMT]]></title><description><![CDATA[<p>Casten an sich sollte klappen denke ich, Dereferenzieren ist dann eine andere Nummer. ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214637</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 23 May 2012 17:13:42 GMT</pubDate></item></channel></rss>