<?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[Größe eines Arrays feststellen]]></title><description><![CDATA[<pre><code class="language-cpp">void foo(double* arrDummy)
{
    cout &lt;&lt; sizeof(arrDummy) &lt;&lt; endl;
}

void main(
{
    double* arrDummy = new double[5];

    foo(arrDummy);
}
</code></pre>
<p>Das klappt natürlich nicht (gibt Größe des Zeigers aus)! Man muss noch die Anzahl der Elemente an die foo übergeben...<br />
ABER nun kommt mein Chef, und behauptet, man könnte die Größe des Arrays feststellen, obwohl man nur dessen Adresse übergibt!!<br />
Was sagt ihr denn dazu??</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/161885/größe-eines-arrays-feststellen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 02:09:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161885.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Oct 2006 06:12:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 06:12:51 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void foo(double* arrDummy)
{
    cout &lt;&lt; sizeof(arrDummy) &lt;&lt; endl;
}

void main(
{
    double* arrDummy = new double[5];

    foo(arrDummy);
}
</code></pre>
<p>Das klappt natürlich nicht (gibt Größe des Zeigers aus)! Man muss noch die Anzahl der Elemente an die foo übergeben...<br />
ABER nun kommt mein Chef, und behauptet, man könnte die Größe des Arrays feststellen, obwohl man nur dessen Adresse übergibt!!<br />
Was sagt ihr denn dazu??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153249</guid><dc:creator><![CDATA[apo]]></dc:creator><pubDate>Thu, 12 Oct 2006 06:12:51 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 06:20:05 GMT]]></title><description><![CDATA[<p>na jo, man kann die Anzahl der Elemente rausfinden (manchmal^^):</p>
<pre><code class="language-cpp">int array[5];

int size = sizeof(array)/sizeof(int);
</code></pre>
<p>kann man natürlich noch allgemeiner schreiben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153252</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Thu, 12 Oct 2006 06:20:05 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 06:27:05 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also erstmal heisst es nach neuestem Standard</p>
<pre><code class="language-cpp">int main()
{
    ...
}
</code></pre>
<p>Dann versteh ich deine Frage nicht ganz.<br />
Üblicherweise legst du vorher die Größe eines Arrays fest, es sei denn, du willst dessen Größe dynamisch zur Laufzeit bestimmen.<br />
Bei einer konkreteren Frage, kann man dir vielleicht eher helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153256</guid><dc:creator><![CDATA[W0lf]]></dc:creator><pubDate>Thu, 12 Oct 2006 06:27:05 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 06:28:51 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void foo(double* arrDummy) 
{ 
}
</code></pre>
<p>Also man hat ja nur diese Funktion, und nun soll man feststellen, wie groß arrDummy is.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153257</guid><dc:creator><![CDATA[apo]]></dc:creator><pubDate>Thu, 12 Oct 2006 06:28:51 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 06:44:53 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also erstmal heisst es nach neuestem Standard</p>
<pre><code class="language-cpp">int main()
{
    ...
}
</code></pre>
<p>Dann versteh ich deine Frage nicht ganz.<br />
Üblicherweise legst du vorher die Größe eines Arrays fest, es sei denn, du willst dessen Größe dynamisch zur Laufzeit bestimmen.<br />
Bei einer konkreteren Frage, kann man dir vielleicht eher helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153259</guid><dc:creator><![CDATA[W0lf]]></dc:creator><pubDate>Thu, 12 Oct 2006 06:44:53 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 07:29:05 GMT]]></title><description><![CDATA[<p>Also wenn du nur einen Zeiger in der Hand hast, geht das überhaupt nicht. Da mußt du schon eine definierte Datenstruktur vorgeben, mit der du arbeiten willst (z.B. könntest du in das null-te Feld die Größe reinschreiben oder ins letzte Feld eine Endemarke setzen).<br />
Oder du verwendest statt nackter Arrays lieber einen STL-Container (vector&lt;&gt; etc) - die kennen ihre Größe.</p>
<p>PS: Eine Möglichkeit gibt es noch - du kannst dich durch die Speicherverwaltung deines Betriebssystems durchwühlen und nachsehen, wo es die Größe der reservierten Heap-Blöcke ablegt (new/delete wissen schließlich, wie groß das Array ist). Aber das ist weder portabel noch besonders komfortabel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153261</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 12 Oct 2006 07:29:05 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 08:29:20 GMT]]></title><description><![CDATA[<p>oder mache es einfach so<br />
#define array_size(array) sizeof(array)/aizeof(array[0])</p>
<p>müsste so klappen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153262</guid><dc:creator><![CDATA[Cefour]]></dc:creator><pubDate>Thu, 12 Oct 2006 08:29:20 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 08:49:04 GMT]]></title><description><![CDATA[<p>Cefour schrieb:</p>
<blockquote>
<p>oder mache es einfach so<br />
#define array_size(array) sizeof(array)/aizeof(array[0])</p>
<p>müsste so klappen</p>
</blockquote>
<p>Solange du das Array direkt vor Ort hast, ja (siehe GPC's Beitrag) - aber wenn du nur über einen Zeiger darauf zugreifen kannst, nützt dir das gar nichts:</p>
<pre><code class="language-cpp">#define array_size(array) sizeof(array)/aizeof(array[0])

void do_something(double* data)
{
  int size = array_size(data);//liefert Müll
  ...
}

int main()
{
  double data[]={1,2,3,4,5};
  int size = array_size(data);//hier funktioniert's
  do_something(data);//das bekommt nur einen Zeiger, aber keine Größenangaben
  ...
}
</code></pre>
<p>(und spätestens wenn du deinen Speicher mit new[] anforderst, kannst du dessen Größe überhaupt nicht mehr auf diese Weise bestimmen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153265</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 12 Oct 2006 08:49:04 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 09:45:58 GMT]]></title><description><![CDATA[<p>So wie CStoll das meinte, kommt es dem wohl am nächsten.</p>
<p>Mein Chef hat sowas gesagt, dass wohl intern so eine Art Markierung sein soll...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153324</guid><dc:creator><![CDATA[apo]]></dc:creator><pubDate>Thu, 12 Oct 2006 09:45:58 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 09:49:39 GMT]]></title><description><![CDATA[<p>apo schrieb:</p>
<blockquote>
<p>Mein Chef hat sowas gesagt, dass wohl intern so eine Art Markierung sein soll...</p>
</blockquote>
<p>Dann hat Dein Chef unrecht. Jedenfalls ist &quot;so eine Art Markierung&quot; keinesfalls portabel. Es seidenn er meint nullterminierte Arrays, das soll er Dir (oder Du uns :D) dann aber auch sagen. Wobei man dann nicht mehr die Zahl 0.0 übergeben könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153327</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 12 Oct 2006 09:49:39 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 10:11:58 GMT]]></title><description><![CDATA[<p>apo schrieb:</p>
<blockquote>
<p>Mein Chef hat sowas gesagt, dass wohl intern so eine Art Markierung sein soll...</p>
</blockquote>
<p>Delphi- oder Java-geschädigt?<br />
Du kannst std::vector&lt;&gt; benutzen, der speichert die Länge mit ist und wie ein Array handhabbar. Oder, wenn du die STL nicht benutzen willst, folgendes struct:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
struct array_t {
    int len;
    T *values;
};
</code></pre>
<p>Zu benutzen wie folgt:</p>
<pre><code class="language-cpp">struct array_t SomeArray;
array_t.values = malloc(42);
if (array_t.values) {
    array_t.len = 42;
};
</code></pre>
<p>Man kann sich noch Hilfsfunktionen zum Handling schreiben, oder es gleich richtig machen und Konstruktoren und Operatoren für array_t einführen, aber dann landet man am Ende bei einem nicht-standardisierten Nachbau von std::vector&lt;&gt;, also kann man auch gleich den benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153350</guid><dc:creator><![CDATA[tommie-lie]]></dc:creator><pubDate>Thu, 12 Oct 2006 10:11:58 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 10:12:04 GMT]]></title><description><![CDATA[<p>apo schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void foo(double* arrDummy) 
{ 
}
</code></pre>
<p>Also man hat ja nur diese Funktion, und nun soll man feststellen, wie groß arrDummy is.</p>
</blockquote>
<p>Wenn du eine Funktion wie foo hast, kannst du nicht nur nicht rausfinden, wieviele Elemente sich hinter arrDummy verbergen. Nein, es kommt noch schlimmer: du kannst nicht mal prüfen, ob arrDummy überhaupt auf ein Array verweist.</p>
<p>Wenn foo also nicht entweder eine bestimmte Konvention vorschreibt (z.B. wie das bei C-Strings durch die Einführung der Nullterminierung gemacht wurde) oder aber noch einen Größenparameter spendiert bekommt, kann foo nichts weiter annehmen, als dass es sich bei arrDummy um einen Zeiger auf ein double handelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153351</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Thu, 12 Oct 2006 10:12:04 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 10:16:22 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>...kann foo nichts weiter annehmen, als dass es sich bei arrDummy um einen Zeiger auf ein double handelt.</p>
</blockquote>
<p>noch nicht mal das...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153357</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Thu, 12 Oct 2006 10:16:22 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 10:23:11 GMT]]></title><description><![CDATA[<p>net schrieb:</p>
<blockquote>
<p>HumeSikkins schrieb:</p>
<blockquote>
<p>...kann foo nichts weiter annehmen, als dass es sich bei arrDummy um einen Zeiger auf ein double handelt.</p>
</blockquote>
<p>noch nicht mal das...</p>
</blockquote>
<p>Natürlich kann ein Aufrufer auch einfach einen Nullpointer übergeben oder einen nach double*-gecastateten Zeiger auf ein Elefant-Objekt. Was ist eigentlich damit sagen wollte ist, dass die Funktion, wenn sie nicht irgendeine zusätzliche Konvention festlegt, von einem *einzelnen* Objekt (besser: 0..1) ausgehen muss, nicht von einem Array.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153360</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Thu, 12 Oct 2006 10:23:11 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 10:30:06 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7395">@tommie</a>: malloc() im Zusammenhang mit C++ Klassen macht sich eher ungünstig. Wenn schon, dann solltest du lieber new nehmen, um den Speicher anzufordern.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/3162">@net</a>:</p>
<blockquote>
<p>Wobei man dann nicht mehr die Zahl 0.0 übergeben könnte.</p>
</blockquote>
<p>Naja, bei einem double würde ich als Endemarke vermutlich NaN verwenden <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/1153369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153369</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 12 Oct 2006 10:30:06 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 10:31:55 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>...dass die Funktion, wenn sie nicht irgendeine zusätzliche Konvention festlegt, von einem *einzelnen* Objekt (besser: 0..1) ausgehen muss, nicht von einem Array.</p>
</blockquote>
<p>naja, wenn man nur den funktiosnkopf kennt: 'void blubb(double *x)' kann man eigentlich von garnix ausgehen. ist es ein array? (warum hat er denn nich x[] geschrieben?) ist es ein pointer auf ein einzelnes double? (soll das verändert werden oder wieso ist das ein pointer?). wir wissen es nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153370</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Thu, 12 Oct 2006 10:31:55 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 10:33:54 GMT]]></title><description><![CDATA[<p>Nein, Null-Terminiert darf das array auch nicht sein!<br />
Aber ich muss es hier wohl nochmal deutlich sagen: Ich möchte kein vector oder sowas übergeben, eigentlich möchte ich gar nix... is nur so eine Meinungsverschiedenheit zwischen mir und meinem Chef!</p>
<p>Und ja, mein Chef ist Java &quot;geschädigt&quot;, denke auch das es daran liegt, dass er sich zu solchen Äußerungen hinreißen lässt.</p>
<p>Nächste Woche ist er wieder da, dann soll er mir zeigen, wie das gehen soll, und ich denke, dann wird auch er einsehen, dass das mit C++ einfach nciht geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153375</guid><dc:creator><![CDATA[apo]]></dc:creator><pubDate>Thu, 12 Oct 2006 10:33:54 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 10:37:01 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7395">@tommie</a>: malloc() im Zusammenhang mit C++ Klassen macht sich eher ungünstig. Wenn schon, dann solltest du lieber new nehmen, um den Speicher anzufordern.</p>
</blockquote>
<p>Stimmt prinzipiell, macht hier aber keinen Unterschied, weil ich einen Pointer initialisiert habe. Allerdings habe ich ein &quot;*sizeof(T)&quot; vergessen, ein weiterer Grund, warum man dafür Memberfunktionen nehmen soll, oder besser gleich std::vector&lt;&gt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153381</guid><dc:creator><![CDATA[tommie-lie]]></dc:creator><pubDate>Thu, 12 Oct 2006 10:37:01 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Thu, 12 Oct 2006 10:44:04 GMT]]></title><description><![CDATA[<p>Vor allem hast du vergessen, daß du über &quot;T&quot; nichts weißt - und wenn der Template-Parameter einen eigenen Konstruktor benötigt, gibt es bei nächster Gelegenheit eine mittlere Katastrophe (versuch' mal, ein Array von std::string per malloc() anzulegen <strong>UND</strong> sinnvoll damit zu arbeiten).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153393</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 12 Oct 2006 10:44:04 GMT</pubDate></item></channel></rss>