<?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[Über Zeiger sizeof der Zeiger Adresse bekommen]]></title><description><![CDATA[<p>Wie kann ich über einen Zeiger die Größe mit &quot;sizeof&quot; von der Adresse bestimmen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void func(char *p);

int main()
{
    char save[11]=&quot;Buchstaben&quot;;
    func(save);

    return 0;
}

void func(char *p)
{
    cout &lt;&lt; sizeof(*p) &lt;&lt; endl;
}
</code></pre>
<p>So gehts ja anscheinend nicht. Da müssten ja 11 Byte rauskommen, kommt aber nä &quot;1&quot;...weiß jemand was ich mein, und wies geht?<br />
Die eins kommt wahrscheinlich weil ich mit &quot;*p&quot; nur das erste Feld anspreche, aber wie Spreche ich dann das komplette Feld an...bzw. was für Möglichkeiten gibts um trotzdem die größe rauszubekommen.</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/201610/über-zeiger-sizeof-der-zeiger-adresse-bekommen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 09:07:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/201610.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 02 Jan 2008 01:19:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Über Zeiger sizeof der Zeiger Adresse bekommen on Wed, 02 Jan 2008 01:19:59 GMT]]></title><description><![CDATA[<p>Wie kann ich über einen Zeiger die Größe mit &quot;sizeof&quot; von der Adresse bestimmen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void func(char *p);

int main()
{
    char save[11]=&quot;Buchstaben&quot;;
    func(save);

    return 0;
}

void func(char *p)
{
    cout &lt;&lt; sizeof(*p) &lt;&lt; endl;
}
</code></pre>
<p>So gehts ja anscheinend nicht. Da müssten ja 11 Byte rauskommen, kommt aber nä &quot;1&quot;...weiß jemand was ich mein, und wies geht?<br />
Die eins kommt wahrscheinlich weil ich mit &quot;*p&quot; nur das erste Feld anspreche, aber wie Spreche ich dann das komplette Feld an...bzw. was für Möglichkeiten gibts um trotzdem die größe rauszubekommen.</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429052</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Wed, 02 Jan 2008 01:19:59 GMT</pubDate></item><item><title><![CDATA[Reply to Über Zeiger sizeof der Zeiger Adresse bekommen on Wed, 02 Jan 2008 01:41:37 GMT]]></title><description><![CDATA[<p>Hallo Stromberg,</p>
<p>du derefenzierst den Zeiger auf den char und fragst danach,<br />
wie groß ein char ist. Ein char hat (afaik auf jedem Betriebssystem) die<br />
Größe 1 Byte.</p>
<p>Wie groß dein array ist kriegst du mit Standard-C- bzw. -C++-Mitteln nicht raus.<br />
Ob es betriebssystemspezifische Mittel gibt, weiß ich nicht, denke aber eher nicht.</p>
<p>Da du hier im C++-Forum postest, schlag ich dir ne (ungetestete) C++-Variante deines Code vor:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

void func(const std::string&amp; value);

int main()
{
    std::string letters(&quot;Buchstaben&quot;);
    func(letters);

    return 0;
}

void func(const std::string&amp; value)
{
    const char *p = value.c_str(); // falls du irgendwo nen const char* brauchst
    std::cout &lt;&lt; value.size() &lt;&lt; std::endl;
}
</code></pre>
<p>Du kannst aber auch in deiner C-Variante nach der string-terminierenden \0 suchen.</p>
<p>Dies erledigt die Funktion strlen für dich:<br />
<a href="http://www.cplusplus.com/reference/clibrary/cstring/strlen.html" rel="nofollow">http://www.cplusplus.com/reference/clibrary/cstring/strlen.html</a></p>
<p>Nimm aber besser den C++ Vorschlag <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>
<p>Für die Verwendung mit anderen Datentypen würde ich std::vector&lt;MyClass&gt; vorschlagen. Die Größe kannst du analog Abfragen.</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429056</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 02 Jan 2008 01:41:37 GMT</pubDate></item><item><title><![CDATA[Reply to Über Zeiger sizeof der Zeiger Adresse bekommen on Wed, 02 Jan 2008 01:42:31 GMT]]></title><description><![CDATA[<p>Array als Referenzparameter:</p>
<pre><code class="language-cpp">void func(char (&amp;a)[11])
{
    cout &lt;&lt; sizeof a &lt;&lt; endl;
}
...
    func(save);
</code></pre>
<p>oder Zeiger auf das Array übergeben:</p>
<pre><code class="language-cpp">void func(char (*p)[11])
{
    cout &lt;&lt; sizeof *p &lt;&lt; endl;
}
...
    func(&amp;save);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1429057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429057</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 02 Jan 2008 01:42:31 GMT</pubDate></item><item><title><![CDATA[Reply to Über Zeiger sizeof der Zeiger Adresse bekommen on Wed, 02 Jan 2008 02:01:21 GMT]]></title><description><![CDATA[<p>Hi Stromberg,</p>
<p>der Vorschlag von Camper nimmt deiner Funktion jedoch jede Variabilität,<br />
da nur noch Zeiger auf Arrays mit einer Größe von genau 11 akzeptiert werden.<br />
Ich denke nicht, dass es das ist, was du willst.</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429058</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 02 Jan 2008 02:01:21 GMT</pubDate></item><item><title><![CDATA[Reply to Über Zeiger sizeof der Zeiger Adresse bekommen on Wed, 02 Jan 2008 06:26:54 GMT]]></title><description><![CDATA[<p>für array gibts noch std::vector</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429068</guid><dc:creator><![CDATA[und]]></dc:creator><pubDate>Wed, 02 Jan 2008 06:26:54 GMT</pubDate></item><item><title><![CDATA[Reply to Über Zeiger sizeof der Zeiger Adresse bekommen on Wed, 02 Jan 2008 06:57:47 GMT]]></title><description><![CDATA[<p>@und:</p>
<p>CSpille schrieb:</p>
<blockquote>
<p>Für die Verwendung mit anderen Datentypen würde ich std::vector&lt;MyClass&gt; vorschlagen.</p>
</blockquote>
<p><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>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429075</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 02 Jan 2008 06:57:47 GMT</pubDate></item><item><title><![CDATA[Reply to Über Zeiger sizeof der Zeiger Adresse bekommen on Wed, 02 Jan 2008 07:40:22 GMT]]></title><description><![CDATA[<p>nur eine anmerkung</p>
<p>CSpille schrieb:</p>
<blockquote>
<p>Hallo Stromberg,</p>
<p>du derefenzierst den Zeiger auf den char und fragst danach,<br />
wie groß ein char ist. Ein char hat (afaik auf jedem Betriebssystem) die<br />
Größe 1 Byte.</p>
</blockquote>
<p>ein char ist so groß wie ein byte, weil ein char ein byte ist. per definitionem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429087</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Wed, 02 Jan 2008 07:40:22 GMT</pubDate></item><item><title><![CDATA[Reply to Über Zeiger sizeof der Zeiger Adresse bekommen on Wed, 02 Jan 2008 12:18:56 GMT]]></title><description><![CDATA[<p>Nein, ein char ist nicht immer 1 Byte (8 Bit) groß!<br />
sizeof(char) liefert immer 1, aber trotzdem kann 1 char aus z.B. 4 Bytes bestehen.<br />
sizeof der anderen Datentypen liefert dann immer einen Wert relativ zu sizeof(char).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429234</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Wed, 02 Jan 2008 12:18:56 GMT</pubDate></item><item><title><![CDATA[Reply to Über Zeiger sizeof der Zeiger Adresse bekommen on Wed, 02 Jan 2008 12:34:07 GMT]]></title><description><![CDATA[<p>Th schrieb:</p>
<blockquote>
<p>Nein, ein char ist nicht immer 1 Byte (8 Bit) groß!<br />
sizeof(char) liefert immer 1, aber trotzdem kann 1 char aus z.B. 4 Bytes bestehen.<br />
sizeof der anderen Datentypen liefert dann immer einen Wert relativ zu sizeof(char).</p>
</blockquote>
<p>Schockierende Neuigkeit: Ein Byte ist auch nicht immer 8 Bit breit. Und der Standard (zumindest der C Standard, wenn es bei C++ anders sein sollte bitte berichtigen) definiert dass ein char ein Byte ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429246</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 02 Jan 2008 12:34:07 GMT</pubDate></item><item><title><![CDATA[Reply to Über Zeiger sizeof der Zeiger Adresse bekommen on Wed, 02 Jan 2008 13:40:48 GMT]]></title><description><![CDATA[<p>Ich zitiere mal Stroustrup, Die C++ Programmiersprache, 2.3.1 Variablen und Arithmetik:</p>
<blockquote>
<p>Eine char-Variable hat die Größe, auf einem vorgegebenen Rechner ein Zeichen (üblicherweise ein Byte) aufzunehmen.</p>
</blockquote>
<p>Man beachte das 'üblicherweise'.</p>
<p>Mit der Bezeichnung &quot;Byte = 8 Bit&quot; beziehe ich mich, auf die gebräuchliche Definition von Byte (s. Oktett): <a href="http://de.wikipedia.org/wiki/Byte" rel="nofollow">http://de.wikipedia.org/wiki/Byte</a><br />
Auch wenn es noch andere Definitionen von Byte gibt...</p>
<p>Weiterhin ist garantiert, daß ein char (zumindestens in C++) immer mindestens 8 Bit speichern kann (was nach der gebräuchlichen Defintion von Byte also bedeutet, daß ein char größer als ein Byte sein kann).</p>
<p>Besser ist es, man verwendet den Begriff Byte am besten gar nicht erst in Bezug auf Datentypengrößen, sondern spricht nur von x Bits.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429303</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Wed, 02 Jan 2008 13:40:48 GMT</pubDate></item><item><title><![CDATA[Reply to Über Zeiger sizeof der Zeiger Adresse bekommen on Wed, 02 Jan 2008 14:09:50 GMT]]></title><description><![CDATA[<p>O.K. dann zitiere ich halt mal den C++ Standard (ISO/IEC 14882:1998(E), First Edition):</p>
<blockquote>
<p>1.7 The C++ memory model [intro.memory]<br />
The fundamental storage unit in the C++ memory model is the byte. <strong>A byte is at least large enough to contain any member of the basic execution character set</strong> and is composed of a contiguous sequence of bits, the number of which is implementation-defined. ...</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1429325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429325</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 02 Jan 2008 14:09:50 GMT</pubDate></item><item><title><![CDATA[Reply to Über Zeiger sizeof der Zeiger Adresse bekommen on Thu, 03 Jan 2008 04:28:15 GMT]]></title><description><![CDATA[<p>die stelle ist fast noch prägnanter:</p>
<p>C++ Standard ISO/IEC 14882:2003, Section 5.3.3 schrieb:</p>
<blockquote>
<p>The sizeof operator yields the number of bytes in the object representation of its operand. [...] sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1;</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1429687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429687</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Thu, 03 Jan 2008 04:28:15 GMT</pubDate></item><item><title><![CDATA[Reply to Über Zeiger sizeof der Zeiger Adresse bekommen on Thu, 03 Jan 2008 06:40:13 GMT]]></title><description><![CDATA[<p>Deswegen ist C und C++ auch deprecated, wie wir in einem anderen Thread gelernt haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429691</guid><dc:creator><![CDATA[beweis]]></dc:creator><pubDate>Thu, 03 Jan 2008 06:40:13 GMT</pubDate></item></channel></rss>