<?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[Integer Array, Zugriff byte- und wordweise]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich hab diese Ausgangslage:</p>
<pre><code class="language-cpp">int p[4];	

p[0] = 5;
p[1] = 0xF;
p[2] = 0xFF;	
p[3] = 0;
int *ptr = &amp;p[0];

std::cout &lt;&lt; *ptr &lt;&lt; &quot;;&quot; &lt;&lt; *(ptr+1) &lt;&lt; std::endl;
</code></pre>
<p>Wieso gibt er mir hier 5 und 15 aus?<br />
Sollte man nicht, da int, dies schreiben um diese Ausgabe zu erlangen:</p>
<pre><code class="language-cpp">std::cout &lt;&lt; *ptr &lt;&lt; &quot;;&quot; &lt;&lt; *(ptr+4) &lt;&lt; std::endl;
</code></pre>
<p>schönen Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284794/integer-array-zugriff-byte-und-wordweise</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 18:23:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284794.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 08 Apr 2011 09:04:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Integer Array, Zugriff byte- und wordweise on Fri, 08 Apr 2011 09:05:42 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich hab diese Ausgangslage:</p>
<pre><code class="language-cpp">int p[4];	

p[0] = 5;
p[1] = 0xF;
p[2] = 0xFF;	
p[3] = 0;
int *ptr = &amp;p[0];

std::cout &lt;&lt; *ptr &lt;&lt; &quot;;&quot; &lt;&lt; *(ptr+1) &lt;&lt; std::endl;
</code></pre>
<p>Wieso gibt er mir hier 5 und 15 aus?<br />
Sollte man nicht, da int, dies schreiben um diese Ausgabe zu erlangen:</p>
<pre><code class="language-cpp">std::cout &lt;&lt; *ptr &lt;&lt; &quot;;&quot; &lt;&lt; *(ptr+4) &lt;&lt; std::endl;
</code></pre>
<p>schönen Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046249</guid><dc:creator><![CDATA[chaoslion]]></dc:creator><pubDate>Fri, 08 Apr 2011 09:05:42 GMT</pubDate></item><item><title><![CDATA[Reply to Integer Array, Zugriff byte- und wordweise on Fri, 08 Apr 2011 09:10:18 GMT]]></title><description><![CDATA[<p>chaoslion schrieb:</p>
<blockquote>
<p>Hallo Leute,<br />
ich hab diese Ausgangslage:</p>
<pre><code class="language-cpp">int p[4];	

p[0] = 5;
p[1] = 0xF;
p[2] = 0xFF;	
p[3] = 0;
int *ptr = &amp;p[0];

std::cout &lt;&lt; *ptr &lt;&lt; &quot;;&quot; &lt;&lt; *(ptr+1) &lt;&lt; std::endl;
</code></pre>
<p>Wieso gibt er mir hier 5 und 15 aus?<br />
Sollte man nicht, da int, dies schreiben um diese Ausgabe zu erlangen:</p>
<pre><code class="language-cpp">std::cout &lt;&lt; *ptr &lt;&lt; &quot;;&quot; &lt;&lt; *(ptr+4) &lt;&lt; std::endl;
</code></pre>
<p>schönen Gruß</p>
</blockquote>
<p>Bei der Pointer-Arithmetik gehst Du nicht in Byte-Schritten durch den Speicher, sondern die Schrittweite entspricht der Größe des Typs auf den der Zeiger zeigt. Bei <code>int *i</code> bedeutet also <code>i+1</code> &quot;ein <code>int</code> weiter&quot; und nicht &quot;ein Byte weiter&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046252</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 08 Apr 2011 09:10:18 GMT</pubDate></item><item><title><![CDATA[Reply to Integer Array, Zugriff byte- und wordweise on Fri, 08 Apr 2011 09:12:24 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Wie sieht es aus, wenn ich doch byteweise durchgehen möchte? Pointer casten oder gibts ne andere Möglichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046255</guid><dc:creator><![CDATA[chaoslion]]></dc:creator><pubDate>Fri, 08 Apr 2011 09:12:24 GMT</pubDate></item><item><title><![CDATA[Reply to Integer Array, Zugriff byte- und wordweise on Fri, 08 Apr 2011 09:12:14 GMT]]></title><description><![CDATA[<p>chaoslion schrieb:</p>
<blockquote>
<p>Wieso gibt er mir hier 5 und 15 aus?<br />
Sollte man nicht, da int, dies schreiben um diese Ausgabe zu erlangen:</p>
<pre><code class="language-cpp">std::cout &lt;&lt; *ptr &lt;&lt; &quot;;&quot; &lt;&lt; *(ptr+4) &lt;&lt; std::endl;
</code></pre>
</blockquote>
<p>Wenn du einen Pointer auf T um eins erhöhst, wird er nicht um ein byte verschoben, sondern um ein Element, also um sizeof(T) bytes. Alles andere macht ja auch keinen Sinn, da er ja sonst mitten in das Objekt rein zeigen würde und man beim Dereferenzieren bestenfalls Murks, schlimmstenfalls Zugriffsfehler bekommt. Nebenbei hat das verschieben um sizeof(T) den Vorteil, dass man sich die ganze sizeof()-Rechnerei sparen kann. Grade der *(ptr+4) wäre sonst auch nicht portabel, da es Systeme gibt, bei denen sizeof(int) nicht 4 ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046256</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 08 Apr 2011 09:12:14 GMT</pubDate></item><item><title><![CDATA[Reply to Integer Array, Zugriff byte- und wordweise on Fri, 08 Apr 2011 09:14:20 GMT]]></title><description><![CDATA[<p>chaoslion schrieb:</p>
<blockquote>
<p>Wie sieht es aus, wenn ich doch byteweise durchgehen möchte?</p>
</blockquote>
<p>Dann siehts so aus als hättest du irgendwas sehr seltsames vor.</p>
<p>chaoslion schrieb:</p>
<blockquote>
<p>Pointer casten oder gibts ne andere Möglichkeit?</p>
</blockquote>
<p>Nein, casten ist der richtige Weg für sowas. Und zwar bitte keinen C-Cast sondern ein reinterpret_cast auf unsigned char* oder sowas. Denn daran sieht man sofort &quot;ich will hier was seltsames anstellen&quot; <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2046259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046259</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 08 Apr 2011 09:14:20 GMT</pubDate></item><item><title><![CDATA[Reply to Integer Array, Zugriff byte- und wordweise on Fri, 08 Apr 2011 09:14:21 GMT]]></title><description><![CDATA[<p>chaoslion schrieb:</p>
<blockquote>
<p>Hallo,<br />
Wie sieht es aus, wenn ich doch byteweise durchgehen möchte? Pointer casten oder gibts ne andere Möglichkeit?</p>
</blockquote>
<p>Mit Pointer-Cast.<br />
Also z.B.</p>
<pre><code class="language-cpp">unsigned char * ptr = reinterpret_cast&lt;unsigned char*&gt;(p);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2046260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046260</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 08 Apr 2011 09:14:21 GMT</pubDate></item><item><title><![CDATA[Reply to Integer Array, Zugriff byte- und wordweise on Fri, 08 Apr 2011 16:02:16 GMT]]></title><description><![CDATA[<p>Achte darauf, dass du aber nicht zu weit gehts beim Iterieren. Außerdem musst du die einzelnen Bytes in einen int (bzw unsigned int) casten, wenn du nicht den ASCII Code meinst.<br />
Ich habs hier mal kompiliert: <a href="http://ideone.com/J0UhA" rel="nofollow">http://ideone.com/J0UhA</a></p>
<p>Allerdings finde ich das ziemlich hässlich (3 casts). Was hast du vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046449</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 08 Apr 2011 16:02:16 GMT</pubDate></item></channel></rss>