<?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[Zeiger auf Array]]></title><description><![CDATA[<pre><code class="language-cpp">arr = {1, 2, 3, ....., n};
int (*p1)[5] = &amp;arr; // Pointer auf Array
int* p2 = &amp;arr[0]; // Pointer auf das erste Element des Arrays
int* p3 = arr; // Pointer auf das erste Element des Arrays
</code></pre>
<p>Kann es sein, dass bei den beiden letzteren Zeigern die Information verloren geht, wieviele Elemente das ursprüngliche Array hatte und womit somit der<br />
sizeof Operator zur Ermittlung der Elementanzahl nicht mehr funktioniert?</p>
<p>anzahl = sizeof(p1)/sizeof(int);</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312779/zeiger-auf-array</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 17:50:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312779.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 14 Jan 2013 08:15:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger auf Array on Mon, 14 Jan 2013 08:15:34 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">arr = {1, 2, 3, ....., n};
int (*p1)[5] = &amp;arr; // Pointer auf Array
int* p2 = &amp;arr[0]; // Pointer auf das erste Element des Arrays
int* p3 = arr; // Pointer auf das erste Element des Arrays
</code></pre>
<p>Kann es sein, dass bei den beiden letzteren Zeigern die Information verloren geht, wieviele Elemente das ursprüngliche Array hatte und womit somit der<br />
sizeof Operator zur Ermittlung der Elementanzahl nicht mehr funktioniert?</p>
<p>anzahl = sizeof(p1)/sizeof(int);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2289441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2289441</guid><dc:creator><![CDATA[sizeof]]></dc:creator><pubDate>Mon, 14 Jan 2013 08:15:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Array on Mon, 14 Jan 2013 08:16:35 GMT]]></title><description><![CDATA[<p>ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2289442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2289442</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 14 Jan 2013 08:16:35 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Array on Mon, 14 Jan 2013 08:17:30 GMT]]></title><description><![CDATA[<p>Ja. sizeof funktioniert so, wie du es willst, nur mit Arrays, nicht mit Zeigern auf Arrays. Da liefert sizeof die Größe des Zeigers.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2289443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2289443</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 14 Jan 2013 08:17:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Array on Mon, 14 Jan 2013 08:20:53 GMT]]></title><description><![CDATA[<p>Danke und wie kriege ich das hin, dass es auch mit Zeigern funktioniert?</p>
<p>Im Prinzip genügt es mir, wenn ich die Anzahl der Elemente herausfinde.<br />
Wenn das auch ohne sizeof geht (auch in c?), dann würde ich das gerne wissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2289444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2289444</guid><dc:creator><![CDATA[sizeof]]></dc:creator><pubDate>Mon, 14 Jan 2013 08:20:53 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Array on Thu, 12 Jun 2014 12:11:02 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2289446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2289446</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 12:11:02 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Array on Mon, 14 Jan 2013 08:25:17 GMT]]></title><description><![CDATA[<p>das geht sogar ganz einfach und das auf 2 Arten, die eine klappt auch in C.</p>
<pre><code>std::vector&lt;int&gt; arr;
arr.size(); //hier haste die Größe
</code></pre>
<pre><code>int arr[5];
unsigned int groesse = 5; // heir ahste die Größe, die Variable nimmste dir halt immer mit und überall hin
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2289447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2289447</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 14 Jan 2013 08:25:17 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Array on Mon, 14 Jan 2013 08:29:54 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>das geht sogar ganz einfach und das auf 2 Arten, die eine klappt auch in C.</p>
<pre><code>std::vector&lt;int&gt; arr;
arr.size(); //hier haste die Größe
</code></pre>
</blockquote>
<p>Danke, das könnte beim nächsten C++ Projekt funktionieren.<br />
Momentan sitze ich aber an c Code.</p>
<blockquote>
<pre><code>int arr[5];
unsigned int groesse = 5; // heir ahste die Größe, die Variable nimmste dir halt immer mit und überall hin
</code></pre>
</blockquote>
<p>Das habe ich befürchtet.<br />
Ich will halt nicht extra Variablen mitrumschleppen, aber wenn es nicht anders geht, werde ich es wohl doch so machen müssen. <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="😞"
    /><br />
Es wäre schöner gewesen, wenn man das irgendwie dynamisch aus dem Zeiger gewinnen könnte.</p>
<p>Mit nem Struct dürfte es wohl auch gehen, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2289448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2289448</guid><dc:creator><![CDATA[sizeof]]></dc:creator><pubDate>Mon, 14 Jan 2013 08:29:54 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Array on Thu, 12 Jun 2014 12:11:05 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2289449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2289449</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 12:11:05 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Array on Mon, 14 Jan 2013 08:33:58 GMT]]></title><description><![CDATA[<p>sizeof schrieb:</p>
<blockquote>
<p>Momentan sitze ich aber an c Code.</p>
</blockquote>
<p>Und warum postest du dann im C++-Forum? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2289450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2289450</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 14 Jan 2013 08:33:58 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Array on Mon, 14 Jan 2013 08:36:54 GMT]]></title><description><![CDATA[<p>sizeof schrieb:</p>
<blockquote>
<p>Mit nem Struct dürfte es wohl auch gehen, oder?</p>
</blockquote>
<p>Also in C würde ich mir wirklich ein struct basteln, was mir die Größe nachhält:</p>
<pre><code>typedef struct 
{
	int * ptr;
	unsigned int size;
}Array;
</code></pre>
<p>Aber als C++'ler findet man sowas ungefähr so schön wie normale Menschen einen HipHopper ohen Swag und ohne Yolo-Motto...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2289451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2289451</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 14 Jan 2013 08:36:54 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Array on Mon, 14 Jan 2013 08:44:40 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>sizeof schrieb:</p>
<blockquote>
<p>Mit nem Struct dürfte es wohl auch gehen, oder?</p>
</blockquote>
<p><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="😕"
    /> Zeig mal?</p>
</blockquote>
<p>Skym0sh0 war schneller.</p>
<p>_matze schrieb:</p>
<blockquote>
<p>sizeof schrieb:</p>
<blockquote>
<p>Momentan sitze ich aber an c Code.</p>
</blockquote>
<p>Und warum postest du dann im C++-Forum? <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>
</blockquote>
<p>Weil ich's auch für C++ wissen will, brauche ja beides, wenn auch nicht sofort.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2289455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2289455</guid><dc:creator><![CDATA[sizeof]]></dc:creator><pubDate>Mon, 14 Jan 2013 08:44:40 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Array on Mon, 14 Jan 2013 08:44:51 GMT]]></title><description><![CDATA[<p>sizeof schrieb:</p>
<blockquote>
<p>anzahl = sizeof(p1)/sizeof(int);</p>
</blockquote>
<p>sizeof(p1) ist nicht das, was du willst. Im ersten Fall müsstest du<br />
sizeof(*p1) schreiben; denn sizeof(p1) wird immer gleich sizeof(void*) und damit unabhängig von der Größe des referenzierten Arrays sein. sizeof(void*) ist groß genug, dass man sich darin eine Adresse merken kann.</p>
<p>Für ein Array kannst du dir aber auch ähnlich wie <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3334.html" rel="nofollow">hier</a> einen eigenen Typen für Array-Referenzen bauen. Zu benutzen wär das dann so:</p>
<pre><code class="language-cpp">void show(array_ref&lt;const int&gt; ar)
{
  cout &lt;&lt; &quot;[&quot;;
  for (int i=0; i&lt;ar.size(); ++i) {
    if (i&gt;0) cout &lt;&lt; &quot;, &quot;;
    cout &lt;&lt; ar[i];
  }
  cout &lt;&lt; &quot;]\n&quot;;
}

int main()
{
  vector&lt;int&gt; foo = {1,2,3,5,8};
  show(foo);
}
</code></pre>
<p>Im Wesentlichen funktioniert array_ref wie eine normale Lvalue-Referenz wobei allerdings die Länge des Arrays eine Laufzeiteigentschaft ist und ein array_ref von rohen Arrays, std::array und std::vector erzeugt werden könnte. Eine Konvertierung von array_ref&lt;U&gt; nach array_ref&lt;T&gt; sollte auch erlaubt werden, wenn U* nach T* konvertierbar ist und sizeof(U)==sizeof(T) gilt.</p>
<p>Ich habe so etwas mal vor nicht allzu langer Zeit mit C++11 Mitteln zu Hause gebastelt und könnte die Implementierung bei Interesse demnächst mal online stellen. Im Moment sitz ich allerdings im Büro.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2289456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2289456</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 14 Jan 2013 08:44:51 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Array on Mon, 14 Jan 2013 09:41:37 GMT]]></title><description><![CDATA[<p>sizeof schrieb:</p>
<blockquote>
<p>Weil ich's auch für C++ wissen will, brauche ja beides, wenn auch nicht sofort.</p>
</blockquote>
<p>Ja, aber wie du merkst, wird dir hier ständig die std::vector-Variante empfohlen, mit der du in C wenig anfangen kannst. <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/2289472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2289472</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 14 Jan 2013 09:41:37 GMT</pubDate></item></channel></rss>