<?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[void pointer Frage]]></title><description><![CDATA[<p>Hallo</p>
<p>Beispiel 1:</p>
<pre><code class="language-cpp">void *ptr;
 *(  (int*) ptr ) = 3;
</code></pre>
<p>Beispiel 2:</p>
<pre><code class="language-cpp">void *ptr;
 * (int*)   ptr   = 3;
</code></pre>
<p>Ist Beispiel 1 das selbe wie 2 ?</p>
<p>( Bei Beispiel 2 da spare ich mir ja 2 Klammern. )</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271792/void-pointer-frage</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 06:20:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271792.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Aug 2010 20:55:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to void pointer Frage on Tue, 03 Aug 2010 20:55:26 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Beispiel 1:</p>
<pre><code class="language-cpp">void *ptr;
 *(  (int*) ptr ) = 3;
</code></pre>
<p>Beispiel 2:</p>
<pre><code class="language-cpp">void *ptr;
 * (int*)   ptr   = 3;
</code></pre>
<p>Ist Beispiel 1 das selbe wie 2 ?</p>
<p>( Bei Beispiel 2 da spare ich mir ja 2 Klammern. )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935820</guid><dc:creator><![CDATA[void *ptr]]></dc:creator><pubDate>Tue, 03 Aug 2010 20:55:26 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Tue, 03 Aug 2010 21:00:54 GMT]]></title><description><![CDATA[<p>Ja. (mal abgesehen davon, dass das Ganze sowieso abstürzt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935823</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Tue, 03 Aug 2010 21:00:54 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Tue, 03 Aug 2010 21:04:24 GMT]]></title><description><![CDATA[<p>ja, weil cast und dereference eine right-to-left associativity und das gleiche precedence level haben <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="😕"
    /></p>
<p>edit: das mal schönes englisch deutsch kauderwelsch...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935825</guid><dc:creator><![CDATA[no_code]]></dc:creator><pubDate>Tue, 03 Aug 2010 21:04:24 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Tue, 03 Aug 2010 21:20:08 GMT]]></title><description><![CDATA[<p>Ty für die Antworten.</p>
<p>Aber das Programm stürtzt nicht ab.<br />
Den Quelltext hab ich aus dem C++ Primer.</p>
<p>Das steht in dem C++ Primer zum void pointer:</p>
<pre><code>Once you assign to a void* you lose any information about what
type it is. This means that before you can use the pointer, you must

cast it to the correct type:
//: C03:CastFromVoidPointer.cpp

int main() {
int i = 99;
3: The C in C++ 155

void* vp = &amp;i;
// Can't dereference a void pointer:
// *vp = 3; // Compile-time error

// Must cast back to int before dereferencing:
*((int*)vp) = 3;

} ///:~
The cast (int*)vp takes the void* and tells the compiler to treat it as

an int*, and thus it can be successfully dereferenced. You might
observe that this syntax is ugly, and it is, but it’s worse than that –

the void* introduces a hole in the language’s type system. That is, it
allows, or even promotes, the treatment of one type as another

type. In the example above, I treat an int as an int by casting vp to
an int*, but there’s nothing that says I can’t cast it to a char* or

double*, which would modify a different amount of storage that
had been allocated for the int, possibly crashing the program. In

general, void pointers should be avoided, and used only in rare
special cases, the likes of which you won’t be ready to consider

until significantly later in the book.

You cannot have a void reference, for reasons that will be explained
in Chapter 11.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1935836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935836</guid><dc:creator><![CDATA[void *ptr]]></dc:creator><pubDate>Tue, 03 Aug 2010 21:20:08 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Tue, 03 Aug 2010 21:22:17 GMT]]></title><description><![CDATA[<p>void *ptr schrieb:</p>
<blockquote>
<p>Aber das Programm stürtzt nicht ab.<br />
Den Quelltext hab ich aus dem C++ Primer.</p>
</blockquote>
<p>Da steht ja auch<br />
void* vp = &amp;i;<br />
und nicht<br />
void *vp;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935839</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Tue, 03 Aug 2010 21:22:17 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Tue, 03 Aug 2010 21:23:33 GMT]]></title><description><![CDATA[<p>sagte doch das buch ist nicht zielführend...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935840</guid><dc:creator><![CDATA[no_code]]></dc:creator><pubDate>Tue, 03 Aug 2010 21:23:33 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Tue, 03 Aug 2010 21:25:05 GMT]]></title><description><![CDATA[<p>no_code schrieb:</p>
<blockquote>
<p>sagte doch das buch ist nicht zielführend...</p>
</blockquote>
<p>In welchem Zusammenhang stellst du jetzt diese Behauptung auf?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935841</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Tue, 03 Aug 2010 21:25:05 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Tue, 03 Aug 2010 21:31:04 GMT]]></title><description><![CDATA[<p>findest du das buch nicht ein bichen zu umfangreich mit zuviel text und zuwenig infos?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935842</guid><dc:creator><![CDATA[no_code]]></dc:creator><pubDate>Tue, 03 Aug 2010 21:31:04 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Tue, 03 Aug 2010 21:34:37 GMT]]></title><description><![CDATA[<p><a href="http://www.cppreference.com/wiki/operator_precedence" rel="nofollow">http://www.cppreference.com/wiki/operator_precedence</a></p>
<p>Dieser Cast-Operator und der Dereference-Operator haben die gleiche Priorität (3).<br />
Bei gleicher Priorität (3) ist die Abarbeitungsreihenfolge right-to-left.<br />
D.h.: Es wird zuerst gecastet und dann dereferenziert.</p>
<p>Und wie <em>wxSkip</em> bereits erwähnte, stürtzt das Programm, in dieser Art, in den meisten Fällen ab, und zwar einfach deswegen, da dein Pointer irgendwo hinzeigt, wo er gerade Bock drauf hat ... in deinem Fall hast du wohl Glück.</p>
<p>no_code schrieb:</p>
<blockquote>
<p>sagte doch das buch ist nicht zielführend...</p>
</blockquote>
<p>Augen auf, Mund zu :p ---&gt; In dem Beispielcode des Primers zeigt der Pointer auf eine zuvor definierte Variable.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935843</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 03 Aug 2010 21:34:37 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Tue, 03 Aug 2010 21:45:00 GMT]]></title><description><![CDATA[<p>Dweb schrieb:</p>
<blockquote>
<p>no_code schrieb:</p>
<blockquote>
<p>sagte doch das buch ist nicht zielführend...</p>
</blockquote>
<p>Augen auf, Mund zu :p ---&gt; In dem Beispielcode des Primers zeigt der Pointer auf eine zuvor definierte Variable.</p>
</blockquote>
<p>ich sagte auch nicht das buch sei falsch...</p>
<p>edit: naja wobei über die klammern kann man dann ja diskutieren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935848</guid><dc:creator><![CDATA[no_code]]></dc:creator><pubDate>Tue, 03 Aug 2010 21:45:00 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Tue, 03 Aug 2010 21:47:54 GMT]]></title><description><![CDATA[<p>Dweb schrieb:</p>
<blockquote>
<p>Dieser Cast-Operator und der Dereference-Operator haben die gleiche Priorität (3).<br />
Bei gleicher Priorität (3) ist die Abarbeitungsreihenfolge right-to-left.<br />
D.h.: Es wird zuerst gecastet und dann dereferenziert.</p>
</blockquote>
<p>Warum einfach, wenn es auch kompliziert geht?</p>
<p>Es gibt bei mehreren unären Prefix-Operatoren überhaupt keine Mehrdeutigkeit, die man auflösen müsste: op1 op2 x heißt immer op1 (op2 x). (op1 op2) x ist syntaktisch sinnlos.</p>
<p>Prioritäten ergeben nur Sinn, wenn es Mehrdeutigkeiten gibt, z.B. bei *x++. Heißt das jetzt (*x)++ oder *(x++)? (Letzteres).</p>
<p>Assoziativitäten ergeben nur Sinn bei mehrstelligen Operatoren. Heißt a = b = c jetzt (a = b) = c oder a = (b = c)? (Letzteres, = ist rechtsassoziativ).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935850</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 03 Aug 2010 21:47:54 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Wed, 04 Aug 2010 08:34:28 GMT]]></title><description><![CDATA[<p>no_code schrieb:</p>
<blockquote>
<p>findest du das buch nicht ein bichen zu umfangreich mit zuviel text und zuwenig infos?</p>
</blockquote>
<p>CXXPrimer::GetInstance().Text().substr(Beispieltext.start(), Beispieltext.length()).IsInfo() == true <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1935949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935949</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Wed, 04 Aug 2010 08:34:28 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Wed, 04 Aug 2010 08:49:34 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>CXXPrimer::GetInstance().Text().substr(Beispieltext.start(), Beispieltext.length()).IsInfo() == true <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>Der Code legt nahe, dass es nur ein Exemplar des Primer gibt. Das ist falsch.<br />
Am besten greifst du so darauf zu:</p>
<pre><code class="language-cpp">PersonalLibraryManager::findBook(&quot;C++ Primer&quot;).take()-&gt;[usw];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1935964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935964</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Wed, 04 Aug 2010 08:49:34 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Wed, 04 Aug 2010 09:03:49 GMT]]></title><description><![CDATA[<p>l'abra d'or schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>CXXPrimer::GetInstance().Text().substr(Beispieltext.start(), Beispieltext.length()).IsInfo() == true <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>Der Code legt nahe, dass es nur ein Exemplar des Primer gibt. Das ist falsch.<br />
Am besten greifst du so darauf zu:</p>
<pre><code class="language-cpp">PersonalLibraryManager::findBook(&quot;C++ Primer&quot;).take()-&gt;[usw];
</code></pre>
</blockquote>
<p>(Das vorher war die Internetausgabe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> )<br />
Noch besser wird's:</p>
<pre><code class="language-cpp">home::shelf&lt;Objects::Book&gt;::iterator iter = Bookshelf.findBook(&quot;C++ Primer&quot;, Language::English);
if(iter == Bookshelf.end())
{
    try
    {
        iter = Bookshelf.AddBook(*(Objects::Book*)this-&gt;Buy(Buyable::Book, &quot;C++ Primer&quot;, Language::English);
    }
    catch(LowMoneyException err)
    {
        std::cout &lt;&lt; &quot;Zu wenig Geld für den Kauf des C++ Primers vorhanden&quot; &lt;&lt; std::endl;
        break;
    }
    catch(NotAvailableException err)
    {
        std::cout &lt;&lt; &quot;Den C++ Primer gibt es momentan nicht zu kaufen&quot; &lt;&lt; std::endl;
        break;
    }
}

std::cout &lt;&lt; iter-&gt;GetRawText().substr(Beispieltext.RawTextStart(), Beispieltext.RawTextLength()).IsInfo() &lt;&lt; std::endl;
//Ausgabe: &quot;1\n&quot;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1935970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935970</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Wed, 04 Aug 2010 09:03:49 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer Frage on Wed, 04 Aug 2010 10:12:22 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f611.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--expressionless_face"
      title="-_-"
      alt="😑"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936011</guid><dc:creator><![CDATA[LowMoneyException]]></dc:creator><pubDate>Wed, 04 Aug 2010 10:12:22 GMT</pubDate></item></channel></rss>