<?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[Mit return ein Array zurückgeben]]></title><description><![CDATA[<p>Hallo,<br />
ich versuche schon seit geraumer Zeit eine Funktion zu schreiben mit der man einen Teil einer Zeichenkette zurückgeben kann.<br />
Mein Problem hierbei ist die Zurückgabe des Ergebnisses.</p>
<pre><code class="language-cpp">char* sub(char in_string[], int start, int length) {
    if (length == 0) length = sizeof(in_string) - start;
    char result[length];
    int n = 0;
    for (int i = start; i &lt; start + length; i++) {
        result[n] = in_string[i];
        n++;
    }
    return result;
}
</code></pre>
<p>Wenn ich nun 'result' innerhalb der Funktion ausgeben lasse, dann erhalte ich das korrekte Ergebnis.<br />
Benutze ich die Funktion dann allerdings so wie hier:</p>
<pre><code class="language-cpp">int main(int argc) {
    char test[] = &quot;this is a little test&quot;;
    char *res;
    res = sub(test, 0, 5);
    printf(res);
    system(&quot;PAUSE&quot;);
    return 0;
}
</code></pre>
<p>bekomme ich nur wirre Zeichen zurück.<br />
Mein Frage lautet also, wie ich die Rückgabe des Ergebnisses formulieren muss, damit ich bei printf() auch das richtige Ergebnis angezeigt bekomme.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/158981/mit-return-ein-array-zurückgeben</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 07:44:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/158981.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Sep 2006 06:39:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mit return ein Array zurückgeben on Mon, 11 Sep 2006 06:39:59 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich versuche schon seit geraumer Zeit eine Funktion zu schreiben mit der man einen Teil einer Zeichenkette zurückgeben kann.<br />
Mein Problem hierbei ist die Zurückgabe des Ergebnisses.</p>
<pre><code class="language-cpp">char* sub(char in_string[], int start, int length) {
    if (length == 0) length = sizeof(in_string) - start;
    char result[length];
    int n = 0;
    for (int i = start; i &lt; start + length; i++) {
        result[n] = in_string[i];
        n++;
    }
    return result;
}
</code></pre>
<p>Wenn ich nun 'result' innerhalb der Funktion ausgeben lasse, dann erhalte ich das korrekte Ergebnis.<br />
Benutze ich die Funktion dann allerdings so wie hier:</p>
<pre><code class="language-cpp">int main(int argc) {
    char test[] = &quot;this is a little test&quot;;
    char *res;
    res = sub(test, 0, 5);
    printf(res);
    system(&quot;PAUSE&quot;);
    return 0;
}
</code></pre>
<p>bekomme ich nur wirre Zeichen zurück.<br />
Mein Frage lautet also, wie ich die Rückgabe des Ergebnisses formulieren muss, damit ich bei printf() auch das richtige Ergebnis angezeigt bekomme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1134888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1134888</guid><dc:creator><![CDATA[P*nguin]]></dc:creator><pubDate>Mon, 11 Sep 2006 06:39:59 GMT</pubDate></item><item><title><![CDATA[Reply to Mit return ein Array zurückgeben on Mon, 11 Sep 2006 06:58:16 GMT]]></title><description><![CDATA[<p>dein array &quot;result&quot; existiert nur lokal innerhalb der funktion &quot;sub&quot;, also auf dem stack - der wieder ueberschrieben wird sobald du eine andere funktion aufrufst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1134896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1134896</guid><dc:creator><![CDATA[hellihjb]]></dc:creator><pubDate>Mon, 11 Sep 2006 06:58:16 GMT</pubDate></item><item><title><![CDATA[Reply to Mit return ein Array zurückgeben on Mon, 11 Sep 2006 07:27:53 GMT]]></title><description><![CDATA[<p>hellihjb schrieb:</p>
<blockquote>
<p>dein array &quot;result&quot; existiert nur lokal innerhalb der funktion &quot;sub&quot;, also auf dem stack - der wieder ueberschrieben wird sobald du eine andere funktion aufrufst.</p>
</blockquote>
<p>Aaaach, ich Hirn!<br />
Danke dir <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
hm... weiß jemand dafür vllt gerade eine Lösung?<br />
static kann ich ja nicht verwenden, weil result eine variable größe hat ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1134912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1134912</guid><dc:creator><![CDATA[P*nguin]]></dc:creator><pubDate>Mon, 11 Sep 2006 07:27:53 GMT</pubDate></item><item><title><![CDATA[Reply to Mit return ein Array zurückgeben on Mon, 11 Sep 2006 08:14:38 GMT]]></title><description><![CDATA[<p>Möglichkeit A: Du legst den Speicher auf dem Heap an (mit new) - Freigabe nicht vergessen.</p>
<p>Möglichkeit B: Du verwendest std::string (oder std::vector).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1134947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1134947</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 11 Sep 2006 08:14:38 GMT</pubDate></item><item><title><![CDATA[Reply to Mit return ein Array zurückgeben on Mon, 11 Sep 2006 09:37:38 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Möglichkeit A: Du legst den Speicher auf dem Heap an (mit new) - Freigabe nicht vergessen.</p>
<p>Möglichkeit B: Du verwendest std::string (oder std::vector).</p>
</blockquote>
<p>Danke, hat gekplappt.<br />
Zum Thema freigeben, wäre das so in ordnung?</p>
<pre><code class="language-cpp">char test[] = &quot;this is a little test&quot;;
char *res = sub(test, 10, 6);
printf(res);
delete res;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1135009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135009</guid><dc:creator><![CDATA[P*nguin]]></dc:creator><pubDate>Mon, 11 Sep 2006 09:37:38 GMT</pubDate></item><item><title><![CDATA[Reply to Mit return ein Array zurückgeben on Mon, 11 Sep 2006 09:50:36 GMT]]></title><description><![CDATA[<p>P!nguin schrieb:</p>
<blockquote>
<p>Zum Thema freigeben, wäre das so in ordnung?</p>
</blockquote>
<p>Wenn du new[] benutzt, musst du mit delete[] freigeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135013</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 11 Sep 2006 09:50:36 GMT</pubDate></item><item><title><![CDATA[Reply to Mit return ein Array zurückgeben on Mon, 11 Sep 2006 10:33:32 GMT]]></title><description><![CDATA[<p>Nur ist hier keinerlei new im Spiel. Das delete muß hier weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135031</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 11 Sep 2006 10:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to Mit return ein Array zurückgeben on Mon, 11 Sep 2006 11:47:36 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Nur ist hier keinerlei new im Spiel. Das delete muß hier weg.</p>
</blockquote>
<p>Das steht wahrscheinlich in der Funktion.</p>
<p>Aber dadurch wird auch gleich das Problem dieser Methode offensichtlich: Da nirgendwo ein 'new' zu sehen ist, kommt niemand auf die Idee, dass da 'delete' hin muss. Generell sollte sich derjenige Codeteil, der Speicher allokiert, auch um dessen Entsorgung kümmern, sonst gibt's Chaos.</p>
<p>Daher wäre hier ein Standardcontainer sicher die bessere Wahl.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135088</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 11 Sep 2006 11:47:36 GMT</pubDate></item><item><title><![CDATA[Reply to Mit return ein Array zurückgeben on Mon, 11 Sep 2006 14:58:34 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Generell sollte sich derjenige Codeteil, der Speicher allokiert, auch um dessen Entsorgung kümmern, sonst gibt's Chaos.</p>
</blockquote>
<p>Ach wie schön, manchmal erinnert zu werden, daß ich mich mit dem<br />
gesamten Speicherallozierungs- und Freigabegeraffel nicht mehr abgeben muß!<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135258</guid><dc:creator><![CDATA[Javaner]]></dc:creator><pubDate>Mon, 11 Sep 2006 14:58:34 GMT</pubDate></item><item><title><![CDATA[Reply to Mit return ein Array zurückgeben on Mon, 11 Sep 2006 15:00:33 GMT]]></title><description><![CDATA[<p>Javaner schrieb:</p>
<blockquote>
<p>Ach wie schön, manchmal erinnert zu werden, daß ich mich mit dem<br />
gesamten Speicherallozierungs- und Freigabegeraffel nicht mehr abgeben muß!<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> :p</p>
</blockquote>
<p>Ja, genau, geht mir genauso. Aber ich programmiere nicht Java, sondern C++. Oder, um Stroustrup zu zitieren: &quot;C++ is the best language for garbage collection principally because it creates less garbage.&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135261</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 11 Sep 2006 15:00:33 GMT</pubDate></item><item><title><![CDATA[Reply to Mit return ein Array zurückgeben on Mon, 11 Sep 2006 15:25:55 GMT]]></title><description><![CDATA[<p>Javaner schrieb:</p>
<blockquote>
<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Generell sollte sich derjenige Codeteil, der Speicher allokiert, auch um dessen Entsorgung kümmern, sonst gibt's Chaos.</p>
</blockquote>
<p>Ach wie schön, manchmal erinnert zu werden, daß ich mich mit dem<br />
gesamten Speicherallozierungs- und Freigabegeraffel nicht mehr abgeben muß!<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> :p</p>
</blockquote>
<p>Naja, nicht immer ist Unwissenheit ein Segen ...<br />
Wie schön, dass ich Speicher genauso wie andere Ressourcen (z.B. Filehandles) behandeln kann - und zwar mit so schönen Sachen wie RAII ... <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>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135296</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 11 Sep 2006 15:25:55 GMT</pubDate></item></channel></rss>